【发布时间】:2021-03-02 23:24:30
【问题描述】:
我目前正在从 youtube 学习 C 语言,这是关于 2D 数组的代码之一:
#include<stdio.h>
int main()
{
int const columns = 3;
int const rows = 2;
int grades[rows][columns] = {
{12, 23, 45},
{64, 78, 89}
};
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
printf("%d ", grades[i][j]);
}
}
return 0;
}
但是当我尝试运行它时,它显示错误“错误:可变大小的对象可能未初始化”
int grades[rows][columns] = {
| ^~~
tempCodeRunnerFile.c:8:10: warning: excess elements in array initializer
8 | {12, 23, 45},
| ^~
tempCodeRunnerFile.c:8:10: note: (near initialization for 'grades[0]')
如此等等。我想不通,它一直在困扰我。
【问题讨论】:
-
正如错误所说:C 标准不允许这样做。如果您使用的是 Microsoft Visual C,则根本无法使用 VLA。
标签: c initialization declaration variable-length-array constant-expression