p的数据类型是指针,指针使用地址赋值,所以可以使用p=&a;
*是运算符,*p的数据类型便不再是指针,而是整型数据,使用整型数据赋值,所以可以使用*p = a;
但是*p=&a,‘=’运算符左右两侧的数据类型不同,所以编译时会报错,不存在int*到int型的运算符重载。
*p=&a这句话本来有错误,很明显的。*p是一个值(指针指向的值),而&a是一个内存地址,应该这样至少p = &a;明白不,大神!
不能那样给指针赋值
int a=3;
int *p=&a; //可以这样在定义的时候初始化
也可以这样
int *p;
p=&a; //把a的地址赋给p
*p=5; //这样给p指向的地址赋值