新手请教高手,高手看下 这是为什么

jin25973970 2016-06-23 10:39:16


...全文
174 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-06-24
  • 打赏
  • 举报
回复
vector太重量级了,还是malloc、realloc、free比较清爽。
  • 打赏
  • 举报
回复
一个数sum存累加和,一个数i存输入数,输入之后就累加,不用数组了。
信阳毛尖 2016-06-24
  • 打赏
  • 举报
回复
int a[100] / int a[100] = {0}:a是一个能存储100个整数的数组,当你控制台输入超过100个数据时,照样会溢出! int a[] = {0}:a是一个能存储1个整数的数组,并且存的数据初始化为0,超过其存储空间就会造成数据溢出越界(数据越界分读越界和写越界,一般写越界比较危险,读越界如果程序健壮性强的话还能凑合,但两者本质上都是内存操作错误,相当的危险!!!) int a[] = {0,0,0,0}: 自己去琢磨一下
jin25973970 2016-06-24
  • 打赏
  • 举报
回复
哈哈哈,感谢各位大神的回复,小菜谢过,7楼的回复是我最想要的,8楼的思路我也知道,是可以不用数组的,但正好学到数组这章,所以想用数组 再次感谢各位大神,结帖
小灸舞 2016-06-24
  • 打赏
  • 举报
回复
两种分配的a数组大小是不同的。
int a[] = {0};你觉得编译器可能知道这个数组大小是多少么?
如果这样写编译器能知道数组大小是100,那为什么不能是200,300呢??
自己打印下size(a) / sizeof(int)就知道了
flying_music 2016-06-24
  • 打赏
  • 举报
回复
数组初始化问题,第一是指定了大小100个 第二个是用元素个数间接指定大小,这样就指定了1个,所以第二个只能放一个数据,你的i加多了,大于等于1了,所以就越界了,报的错误就是这个意思 还有就是既然输入的数据个数未知,那么最好动态分配内存,如果超了就重新分配内存再复制过来,当然也可以直接用C++中的Vector
爆豆 2016-06-24
  • 打赏
  • 举报
回复
还是用动态缓冲区好,静态数组在这种情况不是好选择
lm_whales 2016-06-24
  • 打赏
  • 举报
回复
1)可以估计输入规模,例如100 那么超过100个输入,就不接收,这样就可以解决无限接收,存放数组中,而数组的长度有限的矛盾了 2)动态开辟空间,因此可以解决无限接收问题的问题
zgl7903 2016-06-23
  • 打赏
  • 举报
回复
可以用 td::vector
sprawling 2016-06-23
  • 打赏
  • 举报
回复
对于这种数量不定的,还是用动态内存new或malloc吧.
wang0635 2016-06-23
  • 打赏
  • 举报
回复
第一种:a是一个能存储100个整数的数组 第二种:a是一个能存储1个整数的数组,预存了一个数0

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧