Pro*_*k3u 1 c arrays pointers
我试图理解为什么下面的代码产生的输出7.
7
int main() { int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; int b[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; int c = 5; int *p = a; printf("%d", (c[b])[p]); return 0; }
Sou*_*osh 6
这是纯粹的指针算术.在这里和这里阅读更多关于指针算术的信息
仅供参考,a[5]== 5[a]== *(5 + a)== *(a + 5).相关阅读.
a[5]
5[a]
*(5 + a)
*(a + 5)
所以,在你的代码中,c[b]== b[c]== b[5]== 6.
c[b]
b[c]
b[5]
6
然后,p等于a,a数组的基址,(c[b])[p]== 6[p]== 6[a] == a[6]== 7.
p
a
(c[b])[p]
6[p]
6[a]
a[6]
归档时间:
10 年,9 月 前
查看次数:
43 次
最近记录:
10 年,5 月 前