经过下列的语句 int j,a[10],*p;定义后,下列语句中合法的是(A)。

A:p=p+2;
B:p=a[5];
C:p=a[2]+2;
D:p=&(j+2);
d为什么不对

p是int型指针,j是整数,&(j+2)是指存储j+2的地址,前者是一个指针,后者是一个具体的地址,是不能将一个地址赋给一个指针的。具体可以看看下面这个网站,讲的还挺详细的。
http://blog.sina.com.cn/s/blog_49195a520100l5p0.html
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-05-10
j+2指向哪里,j+2结果是一个数值,怎么去地址呢,j可以取地址,如果写成p=&j+2就没有问题了。本回答被提问者和网友采纳