已知有以下的说明, int a[]={8,1,2,5,0,4,7,6,3,9}; 那么a[*(a+a[3])]的值为 ?
参考答案:
首先,我们来逐步解析表达式 a[*(a+a[3])]
。
已知数组 a
为 {8,1,2,5,0,4,7,6,3,9}
。
a[3]
获取数组a
中索引为 3 的元素的值,即a[3] = 5
。a + a[3]
:由于a[3]
的值为 5,所以a + a[3]
就是a + 5
。在 C/C++ 中,数组名a
实际上是指向数组第一个元素的指针。因此,a + 5
就是指向数组a
中索引为 5 的元素的指针。*(a + a[3])
:这是一个指针解引用操作。由于a + 5
是指向数组a
中索引为 5 的元素的指针,所以*(a + a[3])
就是获取该元素的值,即a[5] = 0
。a[*(a + a[3])]
:现在我们知道了*(a + a[3])
的值为 0,所以a[*(a + a[3])]
就是a[0]
,即数组a
的第一个元素。
因此,a[*(a + a[3])]
的值为 a[0] = 8
。
学习笔记
0 学习笔记