variable-sized object may not be initialized 报错的原因

首先来看一段代码:

int n;
scanf("%d",&n);
int a[n]={2},b[n]={0};

这里创建了两个int类型的数组a[ ],b[ ],指定数组的长度为n,并对数组的第一个元素的值进行赋值(初始化),然后编译器报错:
error: variable-sized object may not be initialized(变量大小的对象不能初始化)
如果在Dev C++的编译器里面来实现的话是可以实现的,这样的写法是没有问题的。这里报错的原因是C语言规定了不能使用variable-sized的数组,问题在于不能用变量声明数组大小的同时初始化
解决办法:创建数组的时候不要对其进行初始化就OK

int n;
scanf("%d",&n);
int a[n],int b[n];
a[0]=2;
b[0]=0;

这样写编译器就不会报错。

posted @ 2021-08-02 10:00  卿源  阅读(7444)  评论(2编辑  收藏  举报