以下是否合法?
const int n=10;
static int array[n];
如果是,那么为什么以及如何?
最佳答案
请注意,在 C 语言中,const
对象不符合常量 的条件。它们不能用于构建常量表达式。在您的代码示例中,n
不是 C 语言术语中的常量。表达式 n
不是 C 中的整型常量表达式。
(有关详细信息,请参阅 "static const" vs "#define" vs "enum" 和 Why doesn't this C program compile? What is wrong with this?。)
这立即意味着您对 array
的声明是试图声明一个可变长度数组。可变长度数组只允许作为自动(本地)对象。一旦你用静态存储持续时间声明你的数组,大小必须是一个整数常量表达式,即编译时常量。您的 n
不符合条件。声明不合法。
这就是为什么在 C 语言中我们主要使用 #define
和/或 enum
来引入命名常量而不是 const
对象的原因.
关于c - 可变长度的静态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26311364/