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

标签 c arrays

<分区>

我正在使用带有 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。

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

关于c - 这个 C 中的数组程序如何给出结果 10?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19469338/

相关文章:

c - gstreamer 如何播放 PCM 文件,编程(C 更喜欢),而不是 gst-launch

javascript - 更新数组中一个对象的值

arrays - 类型检查和迭代 Swift 中的任何数组

c - 哪些 gcc 选项减少了代码大小?

c - 中断和DMA,后台发生了什么?

c++ - 我的 ddwrt 路由器没有数据

arrays - 如何在 VHDL 中连接两个数组

Javascript:这个数组拼接的全部目的是什么?

c++ - 将指针转换为数组(int* 到 int[2])

python - OpenSSL FIPS_mode_set在Python加密库中不起作用