是否允许/定义零长度可变长度数组?

Cor*_*lks 5 c c99

我在C99编程并在我的代码的一部分中使用可变长度数组.我知道在C89中不允许使用零长度数组,但我不确定C99和可变长度数组.

简而言之,以下是明确定义的行为吗?

int main()
{
    int i = 0;
    char array[i];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

AnT*_*AnT 14

不,C语言明确禁止零长度数组,即使它们是通过运行时大小值创建为VLA(如代码示例中所示).

6.7.5.2数组声明符

...

5如果size是一个不是整数常量表达式的表达式:如果它出现在函数原型范围的声明中,则将其视为*被替换为*; 否则,每次评估它时,其值应大于零.