数组的简单问题!

cherryleo 2006-05-28 11:38:43
void main()
{ char c[4];
scanf("%s",c);
printf("%s\n",c);
}

我输入china,为什么程序仍能正常运行,输出china呢,我定义的数组长度只有4啊。
...全文
110 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rollor_phoe 2006-05-29
  • 打赏
  • 举报
回复
你下标越界也没有关系,比如你要访问C[4],已经不在你定义的数组中了,但是他仍然能访问,能照常能输出值出来,只不过输出的值可能是乱七八糟的。你访问的C[4]就是C[3]后面的一个内存单元中的内容,你访问C[5]就是C[4]后面一个内存单元的内容。
数组中你访问越界的话,它也不会报错,如果是容器的话,你访问越界的话,就要报错了。所以说数组不是太安全的,如果不注意的话,有可能会不小心改变了其他内存单元中的内容。
yheng2013 2006-05-28
  • 打赏
  • 举报
回复
越界不是下标
I am sorry
yheng2013 2006-05-28
  • 打赏
  • 举报
回复
因为数组,没有下标保护
建议搂主还是先打好基础

33,311

社区成员

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

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