一个C++初学者的疑惑

liu01rui 2009-04-12 01:15:59
PROHRAM 1_1:

#include <iostream>
using namespace std;
int main()
{
char a[4];int i=0;
a[0]='C';a[1]='h';a[2]='i';a[3]='n';a[4]='a';
for (i=0;i<=4;i++)
a[i]=a[i]+4;
for (i=0;i<=4;i++)
cout<<a[i];
cout<<endl;
return 0;
}

RESULT:

Debug Error!

Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.


这是什么原因?
...全文
336 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
rain4609 2009-04-14
  • 打赏
  • 举报
回复
定义a[4]是定义a[0]~a[3]4个元素,a[4]不存在
爪哇鹅 2009-04-14
  • 打赏
  • 举报
回复
数组下标越界,初学者最容易犯的错误之一。
na2650945 2009-04-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ltc_mouse 的回复:]
栈越界了!

数组a[4]只有4个元素,a[0]~a[3],你的代码访问了a[4],是不对的。把数组改成a[5]应该就可以了
[/Quote]
正解。
cy2xdp 2009-04-14
  • 打赏
  • 举报
回复
你定义了一个字符型的数组有4个元素,下标从0-3,你多了一个
qiance 2009-04-14
  • 打赏
  • 举报
回复
数组越界了
smglaksn 2009-04-14
  • 打赏
  • 举报
回复
越界
xiaoZhang888 2009-04-14
  • 打赏
  • 举报
回复
越界了,楼上们正解。呵呵。
sayaon 2009-04-14
  • 打赏
  • 举报
回复
有点意思啊
szqh97 2009-04-13
  • 打赏
  • 举报
回复
Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.
提示的很清楚了啊,数组a越界了
renshangyuan1988 2009-04-13
  • 打赏
  • 举报
回复
PROHRAM 1_1:

#include <iostream>
using namespace std;
int main()
{
char a[4];int i=0;
a[0]='C';a[1]='h';a[2]='i';a[3]='n';a[4]='a';
for (i=0;i <=4;i++)
a[i]=a[i]+4;
for (i=0;i <=4;i++)
cout < <a[i];
cout < <endl;
return 0;
}

RESULT:

Debug Error!

Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.


这是什么原因?
a[4]不存在,您越界了
ForestDB 2009-04-13
  • 打赏
  • 举报
回复
LZ用的什么工具?
zbihong 2009-04-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ltc_mouse 的回复:]
栈越界了!

数组a[4]只有4个元素,a[0]~a[3],你的代码访问了a[4],是不对的。把数组改成a[5]应该就可以了
[/Quote]
正解!!!!
wwwypy 2009-04-13
  • 打赏
  • 举报
回复
顶!!
buyan2009 2009-04-13
  • 打赏
  • 举报
回复
在不需要数组长度时,可以换用指针实现
rgmlkthh 2009-04-13
  • 打赏
  • 举报
回复
数组越界是每种语言都有的,这个不能错哦。
aaaa3105563 2009-04-12
  • 打赏
  • 举报
回复
int main()
{
char c;
while ((c=getchar())!='\n')
{
if ((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
{
c=c+4;
if (c>'Z'&&c<='Z'+4||c>'z') //如果输进的字符加4完以后处于大于90与小于94或者大于122时属于符号,需做特殊处理
c=c-26;
}
cout<<c;
}
cout<<endl;
}
输入 “china” 即可得到你想要的答案
weixiaoshashou 2009-04-12
  • 打赏
  • 举报
回复
a[4]是从a[0]~a[3];
smillyz 2009-04-12
  • 打赏
  • 举报
回复
定义数组时【】里面的数是几那么就说明开辟了几个内存空间!这是里数组的基本概念!说明没有将C学扎实哦!
honglei8485 2009-04-12
  • 打赏
  • 举报
回复
数组越界
cheng_fengming 2009-04-12
  • 打赏
  • 举报
回复
正解 呵呵 char a[4]定义的是数组的个数为4
加载更多回复(8)

64,632

社区成员

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

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