<分区>
我正在使用带有 GCC 编译器的 Ubuntu 12.04lts。这个程序给出了结果 10。有人能描述一下为什么这个程序会给出这样的结果吗?
#include <stdio.h>
void main(void)
{
int arr[1] = {10};
printf("\n%d\n\n", 0[arr]);
}
<分区>
我正在使用带有 GCC 编译器的 Ubuntu 12.04lts。这个程序给出了结果 10。有人能描述一下为什么这个程序会给出这样的结果吗?
#include <stdio.h>
void main(void)
{
int arr[1] = {10};
printf("\n%d\n\n", 0[arr]);
}
最佳答案
arr[0]
在内部扩展为 *(arr+0)
。类似地,0[arr]
被扩展为 *(0+arr)
,它指向同一事物。因此你看到 10。
通常对于数组或指针a
,a[b]
总是表示*(a+b)
其中 a
是数组或指针的起始地址,b
是偏移量。因此,a[b]
和 b[a]
是等价的。
关于c - 这个 C 中的数组程序如何给出结果 10?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19469338/