1

我正在使用带有 GCC 编译器的 Ubuntu 12.04lts。这个程序给出的结果是 10。请你描述一下为什么这个程序给出这样的结果?

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

2 回答 2

5

arr[0]在内部扩展为*(arr+0). 类似地0[arr]被扩展为*(0+arr)指向同一事物。因此,您看到 10。

通常对于数组或指针aa[b]总是表示数组或指针的起始地址在*(a+b)哪里,并且是偏移量。因此,和是等价的。aba[b]b[a]

于 2013-10-19T18:13:49.193 回答
0

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

int arr[1] = {10};

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

printf("\n%d\n\n",0[arr]);

于 2013-10-19T18:17:36.720 回答