我正在使用Ubuntu 12.04lts和GCC编译器。这个程序给出了结果10.你能否描述一下为什么这个程序会给出这样的结果呢?
#include <stdio.h>
void main(void)
{
int arr[1] = {10};
printf("\n%d\n\n", 0[arr]);
}
答案 0 :(得分:5)
arr[0]
内部扩展为*(arr+0)
。同样地,0[arr]
扩展为*(0+arr)
,这指向同一事物。因此你看10。
通常对于数组或指针a
,a[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]);