永发信息网

C++数组越界的问题。

答案:2  悬赏:30  手机版
解决时间 2021-04-08 21:30
  • 提问者网友:戎马万世
  • 2021-04-08 05:53
求问大神,为什么我写如下代码,然后输入时输入一个6个字幕的name,结果还是能显示出来。
不是应该越界了然后出错吗。
求解释下。
代码如下:
int main(){

char name[5];
cin>>name;
cout< cout< cout< system("PAUSE");
return 0;
}
最佳答案
  • 五星知识达人网友:患得患失的劫
  • 2021-04-08 07:30
因为程序运行时为了使申请的内存大小凑整会得到比实际要用到更大的内存空间, 这里才超出一个字节虽然不合法但刚好也没越出内存保护范围于是还能正常运行. 输入的字符足够多的话就应该要出错了
全部回答
  • 1楼网友:鱼芗
  • 2021-04-08 08:13
i=0时 k从0到4 但是你用到了k+1 k+1从1到5所以出错了.呵呵 你下面那个程序也是这个问题.虽然没有出错.那只不过是巧合罢了 你将if (array[j]>array[j+1]) //交换数组元素 的大于号改成小于号试试 你的程序应该这样 #include"iostream.h" #include"iomanip.h" int main() { int a[5]={2,3,8,6,4}; int temp=0; for(int i=0;i<5;i++) { for(int k=0;k<5-i-1;k++) //此处 { if(a[k]
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯