int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[a] p+5 刚*P为() A.6 B.7 C.8 D. 9

如题所述

int
a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[2]
//这里p指向了a[2]
后面那一句话应该是p=p+5吧,那么p就指向了a[7]

刚*P为()
A.6
B.7
C.8
D.
9
*p指的就是a[7]里面的内容
所以是8
选择C
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-12-25
选C,应指向8/
#include
void
main()
{
int
a[10]={1,2,3,4,5,6,7,8,9,10};
int
*p=&a[2]
printf("%d\n",*(p+5));
}
这里a[2]是一个下标变量,由于地址是从a[0]开始的,所以a[2]的值其实是3,P指向的位置+5位,正好是8,谢谢!本回答被提问者采纳
第2个回答  2019-12-19
你的程序的确很绕啊。但是在我想了一下换是明白了。:
你只要把你每次改变b记下来就明白了
我给你说10吧
28也是一样的
首先b
=
2;
之后fun函数传过去了a[2]的地址就是3
,经过运算函数返回了b的值是5
,在接着就是
b=fun(&a[i])+b;这句
最后b就被改写成了10了
最后输出就是10
第二次循环b的值是10
不是2
这个关键的
那28也就是这个道理了。明白了吧!!
这里我就是说一下为什么第一次循环是10
因为你的程序只是运行了一次,所以b的初始化只经过一次。要想在变成2,就要重新运行程序,这时候b在进行初始化,变成2.好了就这样了!!!希望对你有用!
希望对你能有所帮助。
相似回答