常见问号三连:
- “*” 是什么?
设想一共就只有两种变量类型:指针变量和普通变量。
为了区分,在定义的时候:
//定义普通变量
int a ;
//定义指针变量:这个p是指向int整型的指针
int *p;
- “&” 是什么
取址符号。
每个变量都被分配了一定的空间以存储,所以每个变量都有自己的地址【指针也有自己的地址】。
int *p;
int a;
p = &a ; //p指针指向普通变量a,此时p的的值就是a的地址
- 指针是什么?
太抽象了!指针就是记录某些变量的地址的媒介,可以理解为,它的单位就是地址。
举例1
附上一个图解:
举例2
unsigned char *p = (unsigned char *) (&d);
实际上可以写作:
unsigned char *p;
double d;
p = &d;
其中, (unsigned char *)的用处是——
-(&d)只是一个临时变量,我们没有给(&d)这个变量定义。
-而它本身是一个地址,不是数值,所以(&d)这个临时的变量他的数据类型应该是一个指针变量。