这是我的代码:
const int xsize=150;
char Hey[xsize];
我不明白为什么我不能使用上面的常量声明我的新数组Hey。 任何人都可以帮忙吗?
答案 0 :(得分:3)
它不是有效的C89代码。即使变量恰好是const
,也无法声明具有可变大小的数组。
如果您将其作为#define
而非const int
,则会有效。但它在C99中有效。 GCC和其他编译器也将其作为C89模式的扩展。
答案 1 :(得分:1)
因为const
不会创建常量。它创建了一个只读对象。
对象和常量之间的区别在于对象具有它们所处的特定内存位置;常量仅存在于源代码中。
答案 2 :(得分:1)
在C89中,数组大小应该是常量表达式。 const
变量不是常量表达式。要做到这一点,你必须使用C99中的VLA。