C++数组定义的问题

发布于 2021-11-27 18:08:45 字数 1147 浏览 739 评论 6

(1)

int number; 

cin>>number;

int array[number]; 

(2)

int number; 

cin>>number;

int array[number]={0}; 

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

时光清浅 2021-12-01 23:51:58

变长数组的话还是用stl吧。C++一般都用const int SIZE=XXX;来声明定长数组长度。C的话就宏定义了

一人独醉 2021-12-01 22:27:49

可是我还是不明白,我赋值为0不是给数组初始化为空数组嘛。我水平比较低,别怪我。谢谢,能再详细点吗

左岸枫 2021-12-01 18:48:33

@lws123253 是的,空数组其实就是每个元素都是0的数组,问题就是程序运行的时候他不知道赋值多少个0,int array[num]这种声明其实就是声明了一个指针,num算成访问长度,就算你的num为2,你给array
5赋值都是没问题的,指针嘛,这个你还是懂的吧

苍暮颜 2021-12-01 18:33:15

因为你给赋值为0,其实对计算机而言,当时不知道是你的长度,第一个成功是因为你只有一个指针,长度步伐是随意的,因为你只是地址的变迁,具体是不是你的地址,都无所谓的,你可以用int*  array=new int[number];显示的声明你要分配的长度

多情癖 2021-12-01 09:05:43

谢谢你的建议。

小情绪 2021-11-28 17:19:33

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文