我正在尝试使用以下代码填充数字来自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
我还是比较新的编程,所以我不确定这意味着什么。你能告诉我吗?
答案 0 :(得分:4)
替换此
int num[i] = i+1;
为此:
num[i] = i+1;
您已将数组声明在顶部int num[100];
首先声明数组,然后在循环内迭代它。
既然你是新人,最好先阅读一本关于这个主题的好书recommendation。
答案 1 :(得分:2)
问题是int
中的int num[i] = i+1
。编译器认为您正在尝试声明一个新的数组(也称为num
),其中包含i
个元素(即可变大小的对象部分)。只需从该行中删除int
即可。
答案 2 :(得分:0)
您在循环中再次声明数组:
int num[i] = i+1;
无论如何,这是你的代码中的错误,但编译器的问题不存在:它给你那个错误,因为这不是一个有关数组初始化的有效声明。如果您只是编写int num[i];
代码它是有效的代码并且它将编译而没有错误(好吧,只有C99,旧的C89不支持可变长度数组)。这是编译器识别并尝试报告的内容。