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
.
}
我不理解,为什么对于长度可变和长度固定的数组会有行为差异。在这两种情况下,当函数被调用时,都会给数组分配内存。
length
不是编译时常量。它将在运行时由用户输入。在编译时,编译器无法知道length
的值。 - haccks