C++中,char[]是字符串,还是字符数组?

请教高手,C++中,char[]是字符串,还是字符数组?
我测试了:
char str[4]={'a','b','c','\0'};
cout<<str<<endl;

char str[4]="abc";
cout<<str<<endl;
都输出了abc
那么我见到char[],就说这是一个字符串,对吗?请高手指点,谢谢

C语言对字符串的定义是:以0结尾的ASCII字符序列.
所以结尾有'\0'就叫字符串,如果没有,就叫字符数组
char str[4]="abc"; //这句就是char str[4]={'a','b','c','\0'}; 一回事
str以0结尾,所以str是个字符串,当然也是字符数粗
char str1[3]={'a','b','c'};
str1不能叫字符串,只能叫字符数组追问

老师,谢谢您的指点,麻烦再请教一下,
char *p="helloworld";
cout<<p;
请问为什么会输出 helloworld?
p是字符型指针,p指向的也只是'h'的地址,和字符串一点关系也没有,为什么cout<<p会输出整个字符串呢? 请老师指点,万分感谢。

追答

如果"<<"后面是一个char*类型的地址,那么就从该地址按字节读取并输出,直到碰到0为止,这是C++的重载特性,"<<"对于不同类型的地址,处理方法不同
这和C语言的printf() %s格式符差不多,%s格式符的意思就是:对应的参数是一个char*类型的地址,从该地址按字节读取并输出,直到碰到0为止
char *p="helloworld"; //helloworld只是保存的位置不一样,保存在只读区,其他特性和字符串一样

char str[4]; //对于"<<"来说str不是个数组,它就是个char*类型的地址

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-11
那你学过c语言吗,
你先说一下c语言里
char[]是字符串,还是字符数组?

如果你回答不出来,那建议你的问题用c语言提,毕竟c语言用的人更多