C++数组定义的问题

lws123253 发布于 2016/03/02 16:18
阅读 172
收藏 0

(1)

int number; 

cin>>number;

int array[number]; 

(2)

int number; 

cin>>number;

int array[number]={0}; 

上面的代码在dev c++编译器执行。第一种情况编译执行都没问题,第二种情况会导致编译正常,执行崩溃。这是真么回事?

加载中
1
dongfuye
dongfuye

变长数组在最新的c++标准里面已经不支持了,还是改成vector等容器来编写你的代码更符合规范

lws123253
lws123253
谢谢你的建议。
1
xpbob
xpbob
因为你给赋值为0,其实对计算机而言,当时不知道是你的长度,第一个成功是因为你只有一个指针,长度步伐是随意的,因为你只是地址的变迁,具体是不是你的地址,都无所谓的,你可以用int*  array=new int[number];显示的声明你要分配的长度
xpbob
xpbob
@lws123253 是的,空数组其实就是每个元素都是0的数组,问题就是程序运行的时候他不知道赋值多少个0,int array[num]这种声明其实就是声明了一个指针,num算成访问长度,就算你的num为2,你给array5赋值都是没问题的,指针嘛,这个你还是懂的吧
lws123253
lws123253
可是我还是不明白,我赋值为0不是给数组初始化为空数组嘛。我水平比较低,别怪我。谢谢,能再详细点吗
0
木兰宿莽
木兰宿莽
变长数组的话还是用stl吧。C++一般都用const int SIZE=XXX;来声明定长数组长度。C的话就宏定义了
返回顶部
顶部