注册 登录
编程论坛 C++教室

输出的意外结果

lixang 发布于 2007-03-05 20:03, 615 次点击
#include<iostream>
using namespace std;
void main()
{
char Ar[5]="abcd";
const char *Arr =Ar;
for(int i=0;i<5;++i) { cout<<*Arr++; cout<<i+1;}
cout<<endl;
}
我猜想出的结果是a1b2c3d4?5
或者是a1b2c3d45
但实际结果却是a1b2c3d4 5(多了一空格键)
请各位指点:
6 回复
#2
wfpb2007-03-05 21:52

因为Arr[4]='\0'

#3
a4707023422007-03-06 05:33
编程让我着迷!!!!!!!!1
#4
tongtingting2007-03-08 22:43

同意二楼,你Arr[4]没赋值系统会自动赋0

#5
zcs3022007-03-08 23:01
以下是引用tongtingting在2007-3-8 22:43:57的发言:

同意二楼,你Arr[4]没赋值系统会自动赋0

不完全同意这观点,那个是字符串的结束符号,同时也是转义字符“空格”,那里并不是可有可无的,要是赋值成a[5]="abcde";编译会出错

#6
dlcdavid2007-03-10 01:07
以下是引用zcs302在2007-3-8 23:01:08的发言:

不完全同意这观点,那个是字符串的结束符号,同时也是转义字符“空格”,那里并不是可有可无的,要是赋值成a[5]="abcde";编译会出错

补充一下,,如果不要null结束符,只能a[5]={a,b,c,d,e}

#7
zcs3022007-03-11 19:02
以下是引用dlcdavid在2007-3-10 1:07:39的发言:

补充一下,,如果不要null结束符,只能a[5]={a,b,c,d,e}

我也补充一下,呵呵
如果这样定义,就不能使用 %s 输出了,很多字符串的函数也都不能用

[此贴子已经被作者于2007-3-11 19:02:51编辑过]

1