常量和char数组的范围

时间:2012-11-05 11:20:23

标签: c

  

可能重复:
  Declaring an array with a non-constant size variable

这是我的代码:

const int xsize=150;
char Hey[xsize];

我不明白为什么我不能使用上面的常量声明我的新数组Hey。 任何人都可以帮忙吗?

3 个答案:

答案 0 :(得分:3)

它不是有效的C89代码。即使变量恰好是const,也无法声明具有可变大小的数组。

如果您将其作为#define而非const int,则会有效。但它在C99中有效。 GCC和其他编译器也将其作为C89模式的扩展。

答案 1 :(得分:1)

因为const不会创建常量。它创建了一个只读对象。

对象和常量之间的区别在于对象具有它们所处的特定内存位置;常量仅存在于源代码中。

答案 2 :(得分:1)

在C89中,数组大小应该是常量表达式。 const变量不是常量表达式。要做到这一点,你必须使用C99中的VLA。