指针是一个变量,它存储一个内存地址
指针中存储的地址是它指向的对象的内存结构的第一个块的地址
指向类型对象的指针的语法TYPE
:
TYPE * pointer; // define a pointer of type TYPE
NULL
(address 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) );