已知有以下的说明int a[]={8,1,2,5,0,4,7,6,3,9};那么a[*(a+a(3))]的值

2025-06-20 07:56:16
推荐回答(2个)
回答1:

a[*(a+a(3))] 应该不带这么写的吧...在我这里就编译不通过a(3) 会报错,说没有这样的函数....
我改成这样a[*(a+a[3])]就能输出0了
由内而外分析...首先开个数组,其各个元素的对应的内存是连续的
a是数组的首地址,指向的内存放着8的信息,而a[3]很容易知道是等价于5
即内部是a+5 这时a+5表示的是a指向内存,往后数五个int内存单元,则移到了存放4的内存空间
然后* 引用 *(a+5)就是4
最后a[4]得到0

回答2:

首先a[3]得到5,a+a[3]即a+5,a表示指针,所以a+5表示数组a的头指针下移5个单元,即指向a[5]的指针,所以再加上*,得到a[5]的值4,最后就是a[4]即0