下列程序的运行结果是什么,说明理由

来源:百度知道 编辑:UC知道 时间:2024/06/14 17:44:54
void main()
{
char a[10]={"abcde"},b[]="fgh";
int i=0;
strcat(a,b);
while(a[i++]!='\0')b[i]=a[i];
cout<<a<<'\n'<<b<<'\n';
}

输出结果分别是:abcdefgh fbcdefgh
这个程序能输出,但是只有a的值是正确的,b的值不是一个正确值
A声明为10个char的数组,而b声明为3个char的数组。
进入循环以后a已经成了2个字符串的衔接字符串,但是大小不变。而b仍然只有三个char大小,循环一旦进行到3,这已经超出了b这个数组的范围。造成了数组越界。
这个程序在调试运行的情况下,退出控制台会报错!

efgh
fbcdefgh

efgh
fbcdefgh
这个记过是对的,运行环境:VC6.0
不过不晓得为什么?关注中...