什么是"error: variable-sized object may not be initialized"?



我正在尝试用以下代码用 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 不支持可变长度数组)。这是编译器识别并尝试报告的内容。

相关内容

最新更新