int *p=a和int *p=&a有什么区别?

我在好多问题里都看到了,都没说明白

int *p=&a 其实是两个语句 等价于 int *p; p=&a;
如果a是int型,int *p=a是错误的,正确的应该是 int *p; p=&a;
在定义的时候不能给p直接赋值整型,只能赋值int型地址 即 &a;
如果要给p指针指向的地址赋值,就可以*p=a;但不能在定义*p的时候直接赋整型。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-12-23

1)int *p=a;

举例:int *p=100;

p是一个指针变量,将一个常量赋给一个指针变量,p等于地址0x00000064,即p是指向某个数的指针变量,该数的地址是0x00000064,一般实际中没这么用;跑下程序:

2)int *p=&a;

举例:int a=100; int *p=&a;

a是一个变量,p就是指向a的指针变量,即p等于a的地址;跑下程序:

第2个回答  2012-10-10
从基本定义来啊,int *p之后p为一个地址,*代表指向这个地址,int *p=&a等价于int *p,p=&a.这样p和&a都是地址,可以=。对于int *p=a,如果a为数组名,则也是个地址,与前面的就同了,如果a只是个一般变量,p是地址,*指向它,*p合起来就是一个数,如a是int型,就可看成两个数赋值,如果a不是int型,出错
第3个回答  2012-10-10
int *p=a p指针的值(p代表的地址)是a
int *p=&a 表示p指针指向的是a的地址,p的值是a的地址
第4个回答  2012-10-10
int *p就是申请一个int型的指针p,指针是用来保存地址的,所以&a就是取得a的地址赋给p。但是int*p=a的话,a必须是个地址,可以是指针,也可以使数组名。
相似回答