我正在尝试用以下代码用 1-100 的数字填充数组:
#include <stdio.h>
int main()
{
int num[100];
int i = 0;
for (i = 0; i < 100; i++)
{
int num[i] = i+1;
}
}
但是我收到此错误:
c:18:13: error: variable-sized object may not be initialized
我对编程还比较陌生,所以我不确定这意味着什么。你能告诉我吗?
替换这个
int num[i] = i+1;
为此:
num[i] = i+1;
您已经在顶部声明了数组int num[100];
首先声明数组,然后在循环中迭代它。
既然你是新手,最好先读一本关于我推荐的主题的好书。
问题是int num[i] = i+1
中的int
。编译器认为您正在尝试声明一个新数组(也称为 num
),其中包含 i
个元素(即可变大小的对象部分)。只需从该行中删除int
即可。
您将在循环中再次声明数组:
int num[i] = i+1;
无论如何,这是代码中的错误,但编译器的问题不存在:它给你这个错误,因为这不是一个有效的数组初始化声明。如果你只是编写int num[i];
代码,它是有效的代码,它将编译而不会出错(好吧,只有 C99,旧的 C89 不支持可变长度数组)。这是编译器识别并尝试报告的内容。