一、字符数组输出
C风格的字符数组在遇到标准输出流时会输出,直到遇到’\0’为止:
char a [3] = {'0','1','2'};
cout << a;
输出不做展示,但估计会有乱码,因为在字符串末尾并没有字符串结束符。
二、指向char的指针
类似于第一条,当标准输出遇到char的地址时,会将其当成字符串输出,直到遇到’\0’为止:
char b = '0';
char * c = &b;
//两条输出得到的结果相同
cout << c << endl;
cout << &b << endl;
三、指向char的指针数组的输出
char* a[3], b[3] = {'1','0','\0'}, c = '2', d = ' 3';
a[0] = b; a[1] = &c; a[2] = &d;
cout << a << endl;
cout << a[0] << endl;
cout << *a[0] << endl;
cout << &c;
输出如下:
- 输出a[0]和输出a所输出的地址实际时相同的,但在这里a是指针数组的地址,a[0]则被解释为char类型数组b的首元素地址,所以a[0]会输出b字符串的内容;
- 当对a[0]解引用后,*a[0]实际是b中的第一个字符,所以输出1;
- 输出c的地址时,会如第二点所说,将其当成一个字符串输出直到遇到’\0’。