0

我正在尝试使用以下代码填充一个包含 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

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

4

3 回答 3

4

替换这个

 int num[i] = i+1;

为了这:

 num[i] = i+1;

您已经在顶部声明了数组int num[100];

首先声明数组,然后在循环内对其进行迭代。

由于您是新手,最好先阅读一本关于我推荐的主题的好书。

于 2012-11-25T00:34:35.293 回答
2

问题是intint num[i] = i+1. 编译器认为您正在尝试声明一个num包含元素的新数组(也称为 )i(这是可变大小的对象部分)。只需int从该行中删除。

于 2012-11-25T00:34:33.173 回答
0

您在循环中再次声明数组:

int num[i] = i+1;

无论如何,这是您的代码中的错误,但编译器的问题不存在:它给您该错误,因为这不是对数组进行初始化的有效声明。如果您只是编写int num[i];代码,那么它是有效代码,并且它会毫无错误地编译(好吧,仅来自 C99,旧的 C89 不支持变长数组)。这是编译器识别并尝试报告的内容。

于 2012-11-25T00:40:57.720 回答