定义问题,前一个指针定义与后一个有什么区别?

img

第一个p=a ;叫定义指针p. p是一个指针类型了,此时p就是a的地址;第二个p=a,*p不叫指针,而是p指针所指向的地址内的值.

int a[2]={2,3};
int *p;//p是指针
p=a; //p等于a的首地址即a[0]所在地址
int s=*p; // *p是 p指针指向的地址内的值.即2


int *p;

其中p是变量,int *是数据类型。后续单独使用**的作用就是解指针,即找到指针表示的那段内存。

当定义指针的时候,这么写:
int  *p = a;  //这里的*用来申明p是指针类型
当给指针赋值的时候,这么写:
p = a; //p已经是指针了
当给指针指向的地址进行内容赋值时,这么写:
*p = 10;//这里的*表示p指针指向的地址的内容,和上面指针定义时的*的含义是有区别的