1
12
我唯一见过实际使用的零长度数组是当您想要一个可变长度的结构时。 在这个例子中 here
您不希望在上述结构中使用指针,因为您希望内容成为结构的已分配内存的一部分。 如果对上述结构执行sizeof操作,则它不包含任何内容空间。我不确定这是否能成为一个标准,它会在各种编译器上发出警告。 |
2
9
ISO C禁止
这定义了一个对象
这是一个编译错误。不允许。不是C,不是C++。
如前所述的错误--数组的大小必须大于零。
也称为 结构黑客 . 几乎所有操作系统(Linux、Windows)的低级代码都被滥用。 C99确实为我们提供了一个称为灵活阵列成员的无尺寸阵列:
|
3
2
你可以从这里得到一些答案 GCC docs . 但这主要集中在将零长度数组作为结构的最后一个成员这一主题上。它没有给出关于大小的直接答案。 (正如其他人所说,零长度数组不在标准C中,但它们在GNU C中。) |
4
1
根据C99标准(7.20.3),处理分配功能:
换句话说,在声明的情况下
|
5
0
数组的大小不能为零。
上述文本对于普通数组(§1)和vla(§5)都是正确的。这是C标准中的规范性文本。编译器不允许以不同的方式实现它。 gcc-std=c99-pedantic对此给出警告。 |
Toniq · javascript为php保存多维数组 1 年前 |
Jannis · Java中数组的怪异行为 1 年前 |
callum · 如何识别数组中与给定序列不匹配的元素? 1 年前 |
tenfour · 如何使用数组元素的索引初始化数组元素 2 年前 |
Guillaume · 使用操作从Python列表创建numpy数组 2 年前 |
maxMas · Swift 5:为什么会出现索引超出范围错误? 2 年前 |