C++数组定义的问题
(1)
int number;
cin>>number;
int array[number];
(2)
int number;
cin>>number;
int array[number]={0};
上面的代码在dev c++编译器执行。第一种情况编译执行都没问题,第二种情况会导致编译正常,执行崩溃。这是真么回事?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
变长数组的话还是用stl吧。C++一般都用const int SIZE=XXX;来声明定长数组长度。C的话就宏定义了
可是我还是不明白,我赋值为0不是给数组初始化为空数组嘛。我水平比较低,别怪我。谢谢,能再详细点吗
@lws123253 是的,空数组其实就是每个元素都是0的数组,问题就是程序运行的时候他不知道赋值多少个0,int array[num]这种声明其实就是声明了一个指针,num算成访问长度,就算你的num为2,你给array
赋值都是没问题的,指针嘛,这个你还是懂的吧
因为你给赋值为0,其实对计算机而言,当时不知道是你的长度,第一个成功是因为你只有一个指针,长度步伐是随意的,因为你只是地址的变迁,具体是不是你的地址,都无所谓的,你可以用int* array=new int[number];显示的声明你要分配的长度
谢谢你的建议。
变长数组在最新的c++标准里面已经不支持了,还是改成vector等容器来编写你的代码更符合规范