什么是“错误:可变大小的对象可能无法初始化”?

时间:2012-11-25 00:33:07

标签: c

我正在尝试使用以下代码填充数字来自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

我还是比较新的编程,所以我不确定这意味着什么。你能告诉我吗?

3 个答案:

答案 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不支持可变长度数组)。这是编译器识别并尝试报告的内容。