C99 允许定义具有非常量大小的数组,即用于定义数组的大小可以在运行时改变。解释它的代码片段是,
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
.
}
我不明白,为什么可变长度的数组和恒定长度的数组的行为会有所不同。在这两种情况下,调用函数时都会为数组分配内存。