相关疑难解决方法(0)

对于数组,为什么a [5] == 5 [a]?

正如Joel在Stack Overflow播客#34中用C编程语言(又名:K&R)所指出的那样,在C中提到了数组的这种属性:a[5] == 5[a]

乔尔说,这是因为指针运算,但我仍然不明白.为什么a[5] == 5[a]

c arrays pointers pointer-arithmetic

1567
推荐指数
16
解决办法
9万
查看次数

如果我在C/C++中定义0大小的数组会发生什么?

只是好奇,如果我int array[0];在代码中定义零长度数组会发生什么?海湾合作委员会根本没有抱怨.

示例程序

#include <stdio.h>

int main() {
    int arr[0];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

澄清

我实际上是在试图弄清楚零长度数组是否以这种方式初始化,而不是像Darhazer的注释中那样指向可变长度,是否优化了.

这是因为我必须释放一些代码,所以我想弄清楚我是否必须处理SIZE定义为的情况0,这在一些静态定义的代码中会发生int array[SIZE];

我真的很惊讶海湾合作委员会没有抱怨,这导致了我的问题.根据我收到的答案,我认为缺少警告主要是因为支持未使用新[]语法更新的旧代码.

因为我主要是想知道这个错误,所以我将Lundin的答案标记为正确(Nawaz是第一个,但它并不完整) - 其他人指出它实际用于尾部填充结构,虽然相关,但不是正是我想要的.

c c++ arrays

120
推荐指数
7
解决办法
5万
查看次数

标签 统计

arrays ×2

c ×2

c++ ×1

pointer-arithmetic ×1

pointers ×1