【发布时间】:2013-09-22 03:40:56
【问题描述】:
C99 允许定义具有非常量大小的数组,即用于定义数组的大小可以在运行时更改。代码 sn-p 来解释它,
void dummy_function1(unsigned int length) {
char arrA[length]; //Allowed
.
.
}
但是,它不允许就地初始化它,即
void dummy_function2(unsigned int length) {
char arrA[length]={0}; //Not Allowed, compiler throws an error
char arrB[10]={0}; //Allowed
.
}
我不明白,为什么可变长度的数组和恒定长度的数组的行为会有这种差异。在这两种情况下,调用函数时都会为数组分配内存。
【问题讨论】:
-
length不是编译时间常数。它将由用户在运行时输入。在编译时,length的值对于编译器是未知的。 -
这不是提议的原始问题的副本。这些问题询问为什么不能初始化可变长度数组。这个问题专门询问为什么 C 标准不提供初始化可变长度数组。
标签: c arrays initialization