3
回答
C++数组定义的问题
百度AI开发者大赛带你边学边开发,赢100万奖金,加群:418589053   

(1)

int number; 

cin>>number;

int array[number]; 

(2)

int number; 

cin>>number;

int array[number]={0}; 

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

举报
lws123253
发帖于2年前 3回/169阅
共有3个答案 最后回答: 2年前

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

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