2012-11-25 59 views
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 

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

+3

编程新手并不意味着您可以在询问之前跳过搜索互联网。 Stackoverflow本身建议看看[this](http://stackoverflow.com/q/11562642/912144),[this](http://stackoverflow.com/q/3082914/912144)和其他许多人回答你的问题题。 – Shahbaz

回答

2

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

3

替换此

int num[i] = i+1; 

对于这一点:

num[i] = i+1; 

你已经宣布在顶部int num[100];

首先声明数组的数组,然后遍历它里面的循环。

由于您是新手,因此您最好先阅读一本关于该主题的好书,我的recommendation

+0

嗯,这就是我现在正在做的。非常感谢你的帮助!!! :) – user1850397

+0

@ user1850397 Np,欢迎你。如果你的问题是解决,考虑接受一个答案,所以其他人会知道这个问题已经解决。如何接受答案http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – dreamcrash

0

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

int num[i] = i+1; 

无论如何,这是在你的代码中的错误,但编译器的问题是不存在的:它给你的错误,因为这不是一个有效的声明与数组的初始化。如果你只写int num[i];代码它是有效的代码,它会编译没有错误(好吧,只有从C99,旧的C89不支持可变长度数组)。这是编译器识别并尝试报告的内容。

相关问题