新手的问题

wansuiwht 2009-05-28 10:23:55
int * doubleCapacity(int *list, int size);
int main()
{
srand(time(0));
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int *d = doubleCapacity(a, 10);
for (int i = 10; i < 22; i++)
d[i] = rand() % 10;
for (int i = 0; i < 22; i++)
cout << d[i] << endl;
return 0;
}
int *doubleCapacity(int *list, int size)
{
int *p = new int[2 * size];
for (int i = 0; i < size; i++)
p[i] = list[i];
return p;
}

我这段代码.为什么可以到22呢.怎么会多2呢.
...全文
59 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
brookmill 2009-05-28
  • 打赏
  • 举报
回复
c里面类似这样的情况很多。
很多不可预料的错误,开发、测试的时候都不出现,给了客户就出错,那就死的很难看了
liqlxyj 2009-05-28
  • 打赏
  • 举报
回复
新建的c++群,望大家加入,讨论
群号:62456960
希望加入的多讨论,一起进步
谢谢.
wansuiwht 2009-05-28
  • 打赏
  • 举报
回复
呵呵,谢谢三楼的.做题时无意间发现的这个问题.我刚才试了试,最多能多使用两个.
wansuiwht 2009-05-28
  • 打赏
  • 举报
回复
我的意思是.int *p = new int[2 * size]; 这里只给他分配了20个.那个循环怎么能到22.也不报错.
brookmill 2009-05-28
  • 打赏
  • 举报
回复
数组越界,分配了20个却使用了22个,
这种情况,有可能出错,也有可能不出错,结果无法预料
d[20]、d[21]的位置正好没有别人使用,就不出错了。
看来楼主RP不错 :)
不过这种事还是要避免未好
张赐 2009-05-28
  • 打赏
  • 举报
回复
for (int i = 0; i < 22; i++)

如果要到20的话,应该

for(int i = 0; i<20; i++)
wansuiwht 2009-05-28
  • 打赏
  • 举报
回复
那个循环为什么可以到22呢. 应该是20啊

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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