在指针变量中,*p,&p,p到底有什么区别?为什么不可以写int a=5,*p;*p=&a;但是可以直接写int *p=&a;此时*p到底是a的地址还是a的值?以及如果输出&p那又是什么?我已经搞不清了= =
nt a=5,*p;//在定义的时候星号是说明p是指针变量的
*p=a;//这里的星号是取地址符号,
int定义一个整形变量
int *p定义一个指向整形变量的指针
此时p是一个指针
p = &a即将a的地址赋值给指针变量p
此时*p指指针变量p指向的变量的值
就把定义的时候int *看做一起的,就是int *p定义的是int *类型的p指针,其中p代表指针的地址,*p代表p地址中的值。
回复 XFChen:那&p是指啥,我有做到过这个选择题,以及为什么不可以写int a=5,*p;*p=&a;但是可以直接写int *p=&a;此时*p到底是a的地址还是a的值?
回复 吴思佳:int *p=&a;这个定义语句把int *看做类型名(类似int)。所以可以看做int *p;p=&a;表示定义一个*p指针指向a地址。其中p的值是a的地址(&a),*p表示对p的地址求值运算,该题*p的值就是a了。
可以写int *p = &a;
可以写p = &a;
可以写*p = a;
就是不能写*p = &a
多看看,自己理解一下
点赞
扫一扫分享朋友圈
二维码
分享
你确定要删除这个问题吗?