一题C语言 但我不会 哪位大哥帮个忙呢

来源:百度知道 编辑:UC知道 时间:2024/06/17 01:32:51
设变量定义为 int a[3]={1,4,7},*p=&a[2]-2,则*p的值是 () 。
A 、 &a[2]-2 B 、 5 C、2 D、1
谁能帮我解释一下怎么做??谢谢

D
&a[2]返回a[2]的地址,&a[2]-2返回a[0]的地址负值给指针p,*p取内容为1

补充:lcfred的解释不正确。
“&a[2]返回a[2]的地址,&a[2]-2返回a[0]的地址负值给指针p,*p取内容为1”
第一句正确,第二句错误。因为这个表达式左边不是一个指针,仅仅是*p。p是指针,而*p是一个非指针变量。

选A

&a[2]为数组a的第三个元素7的地址,它等价于a+2(注意这里的2)表示一个元素的长度,即sizeof(int)。同时注意数组的第一个元素是a[0]).因此*p就是&a[2]-2