c - 零长度数组

标签 c arrays

在 C 中使用零长度数组有什么优点?

例如:

struct email {
    time_t send_date;
    int flags;
    int length;
    char body[];
}list[0];

最佳答案

大小为 0 的数组在 C 中无效。

char bla[0];  // invalid C code

来自标准:

(C99, 6.7.5.2p1) "If the expression is a constant expression, it shall have a value greater than zero."

因此 list 声明在您的程序中无效。

以不完整类型作为结构体最后一个成员的数组是灵活数组成员

struct email {
    time_t send_date;
    int flags;
    int length;
    char body[];
};

这里body是一个灵活的数组成员。

关于c - 零长度数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12412067/

相关文章:

c - 从函数 C 分配数组和赋值

c - 使用 USB2 连接的 ext2 卷改善小文件读取时间

函数内的 Char 指针分配 - 段错误

c - 堆栈实现为数组,在 C 中默认第一个值为 0

c - Turbo C++ 错误地执行条件为文字 0 的循环

java - 字符串到数组到字符串的 C# Java 问题

c - 在同一功能中对一个 fd 进行多次关闭调用是否重要?

ios - 根据3个数组中的数据创建TableView Sections

c# - C# 中的索引越界异常

javascript - 将项目数组拆分为 N 个数组