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