问题描述
- char a[]和int a[] cout<<a不同
- c语言里面:
int a[]={1234};
cout<<a<<endl;char b[]=""abcd"";
cout<<b<<endl;为什么结果会不同,原理在哪
解决方案
字符数组是可以用这种方式输出的因为数组名即代表首地址数组是一块连续的内存空间所以能直接输出.如果是其他类型的数组则输出的是一个地址。
ostream的<<操作符 专门重载了char*的版本。因为char*很特殊,C里用它来表示字符串。
解决方案二:
这就是“多态”,相同的调用方式,具体到不同的类型,有不同的结果。再比如,你可以用同样的代码将数据送到流中,但是文件流是写文件,网络流是收发数据,而作为开发者你不用关心。
解决方案三:
在谭浩强的书里面说到过,数组名代表的是数组的首地址,int a[]char b[]的a,b指的都是存储a数组与字符串b数组的地址。a与b就是指针。
但是字符串数组有一个特性,就是你用cout输出函数进行输出时只需指明其首地址即可。
如果LZ学过C想想printf(""%s""b);与prrintf(""%d""&a[i])就可以了。
时间: 2024-11-03 21:15:19