C中的这个数组程序如何给出结果10?

时间:2013-10-19 18:10:15

标签: c arrays

我正在使用Ubuntu 12.04lts和GCC编译器。这个程序给出了结果10.你能否描述一下为什么这个程序会给出这样的结果呢?

 #include <stdio.h>
 void main(void)
 {
     int arr[1] = {10};
     printf("\n%d\n\n", 0[arr]);
 }

2 个答案:

答案 0 :(得分:5)

arr[0]内部扩展为*(arr+0)。同样地,0[arr]扩展为*(0+arr),这指向同一事物。因此你看10。

通常对于数组或指针aa[b]始终表示*(a+b),其中a是数组或指针的起始地址,b是抵消。因此,a[b]b[a]是等效的。

答案 1 :(得分:0)

下面的行表示arr是int类型数组,它的大小为1,初始化为10,即索引0有10

int arr [1] = {10};

然后下一行printf语句在索引0处打印arr的值。

的printf( “\ n%d \ n \ n”,0 [ARR]);