*p=&a;scanf("%ld",p);为什么这样写不对呢

*p=&a;scanf("%ld",p);为什么这样写不对呢

1.一般来说*p=&a的表示方法是错的,*p=a和p=&a是正确的。

2.*p=a的意思:将a的值赋给p指针指向的地址的值;

3.p=&a的意思是:将a的地址赋给指针p;

4.区别:*p是一个值;p是一个地址;两者完全不相同。

5.*代表着p指向的地址的值,简单来说就是取值;&是取地址符号,取的是地址;p是指针,可以理解为所指向的值的地址,*p就是取p指针指向的地址的值,&a就是取a的地址。

 

来源:https://zhidao.baidu.com/question/88668867.html

 

如有帮助请采纳回答 谢谢

因为*p应该指向long型的变量,而&a是一个变量的地址,所以错了,如果将式子改为p=&a就对了,