我试图理解为什么以下代码产生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;
}
答案 0 :(得分:6)
仅供参考,a[5]
== 5[a]
== *(5 + a)
== *(a + 5)
。 Related Reading
因此,在您的代码中,c[b]
== b[c]
== b[5]
== 6
。
然后,p
等于a
,a
数组的基地址,(c[b])[p]
== 6[p]
== 6[a]
== a[6]
== 7。
答案 1 :(得分:2)
好吧,由于c
为5,c[b]
与b[5]
相同,因为p
指向a
,{{1} }与6[p]
相同,为7。