c - "a[0]"的意思不仅仅是 "a"吗?

标签 c arrays

<分区>

我和我的一个 friend 正在争论这个问题,所以我们认为 在这里我们可以得到一个合适的答案,并有相应的解释。 int a[0]; a[0] 是一个数组吗?它有什么优点吗? (我不仅想知道如果我定义 a 和 a[0] 会发生什么,而且还想知道它的优点以及它不仅仅是变量。)

最佳答案

作为独立的堆栈变量,它没有用处。但是,作为结构的最后一个成员,它可以用作可变长度数组,并且这样做曾经是一种常见的技术。例如:

struct foo {
  int a[0];
};

struct foo* bar = malloc( sizeof *bar + 10 * sizeof *bar->a );
/* now you can (possibly) use bar->a as an array of 10 ints */

请注意,这是一个非标准的、不可移植的 hack,在新代码中肯定不是好的做法。

关于c - "a[0]"的意思不仅仅是 "a"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23995800/

相关文章:

c - 未解析的外部符号 bcrypt_gensalt

c - 最后一行代码出现段错误

c - 如何释放在双指针结构上分配的内存

c - HTTP代理实现: content encoding error

比较C中的两个数组?

java - 创建多维数组时的维度顺序

java - 从数组列表打印

c++ - 为什么我可以声明一个二维数组,它具有两个维度大小的变量而不是新的?

C 插入排序陷入 while 循环

javascript - 从嵌套对象创建对象数组