指针是一个变量,其存储的存储器地址
在指针所存储的地址是它指向的对象的存储器结构的第一嵌段中的
的语法的地址指向在TYPE
类型的对象的指针的:
TYPE * pointer; // define a pointer of type TYPE
NULL
(地址0
)表示的指针,不任何地方目前指向:
pointer = 0;
为了得到一个变量或对象的存储器地址:
pointer = &object; // pointer now stores the address of object
为了获得尖TYPE
变量,则去参考指针:
assert(&(*pointer) == &object); // *pointer ~ object
在例如:
int a = 10; // type int
int * b = &a; // pointer to int
int* * c = &b; // pointer to int*
printf(" %d \n ", a);
printf(" %d \n ", *b);
printf(" %d \n ", **c);
char t [256] = "Not Possible ?";
char * x = t;
char * y = (x + 4); // address arithmetic
printf(" %s \n ", x); // Not Possible ?
printf(" %s \n ", y); // Possible ?
void*
是的,不论它们指向什么特殊指针类型,它可以存储任何程度的任何指针,但不能使用,直到你把它转换为兼容的类型..
void * z = &c; // c holds int**
printf(" %d \n ", **((int**)c));
指针有一个固定大小(usualy) (指向成员的是不同的故事),因为他们拥有一个内存地址。所以第一个问题的答案是否定的。第二块代码不合法 - “pObject2”和“pObject3”不是指针。 – jrok
全部都是一样的 –
@jrok啊,语法错误 – mr5