我写了一个简单的代码,我在其中创建没有固定大小的数组。我尝试编译代码gcc
,它工作正常。请解释为什么在编译时应该知道这是有效的数组大小。
这是我使用的代码。
void f(int k)
{
int a[k];
.....//some operation
}
int main()
{
int i = 10;
f(10);
return 0;
}
我写了一个简单的代码,我在其中创建没有固定大小的数组。我尝试编译代码gcc
,它工作正常。请解释为什么在编译时应该知道这是有效的数组大小。
这是我使用的代码。
void f(int k)
{
int a[k];
.....//some operation
}
int main()
{
int i = 10;
f(10);
return 0;
}
此功能称为VLA
可变长度数组。并非所有 C 标准都支持这一点。在最近的 C 标准(如 C11
and C99
)中,它受到支持,但在较旧的 C 标准中不支持“C89”。
如果您正在使用gcc
,请查看有关此的编译器文档。