大数跨境
0
0

关于字符数组为什么可以以数组名来用cout输出数组内容,而普通数组不行

关于字符数组为什么可以以数组名来用cout输出数组内容,而普通数组不行 Social Companion
2018-07-16
2
导读:先上范例:int a[10] = {1,2,3,6,7};char b[6] = {'h','a','p',

先上范例:

int a[10] = {1,2,3,6,7};

char b[6] = {'h','a','p','p','y','\0'};

char c[] = "happy";

cout<<a<<endl;

cout<<b<<endl;

cout<<c<<endl;

输出结果为:

0x22fe6c

happy

happy

从以上范例可以看出,普通数组中以数组名用cout来输出,只会得到一串地址;用字符数组则会输出数组中的内容。

那为什么会这样呢?

答案:因为 char 型数组中的每一个元素都是一字节,所以每一个字符之间的地址都是 +1 的是连续的,所以当 cout 输出时读到字符数组中的 \0 便停止输出; 而 int 数组每个元素占 4 个字节所以数个数组中每个元素地址的间隔是 4,但其实它也是连续的,出现乱码是因没找到结束符。


【声明】内容源于网络
0
0
Social Companion
信息科技教学,个人思考随感的在线记事本
内容 791
粉丝 0
Social Companion 信息科技教学,个人思考随感的在线记事本
总阅读117
粉丝0
内容791