char型数组赋值问题
#include<iostream>using namespace std;
int main()
{
char A[] = "a";
cout << "A=" << A << endl;
cout << "A=" << A << endl;
char B[] = { 'a' };
cout << "B=" <<B<< endl;
return 0;
}
用字符赋值给数组B[],长度为1,输出B=a;
用字符串赋值给数组A[],长度为2,输出A=a,A= ;
显示为空,也不出现乱码,A里面存的是什么?
空字符 '\0' 字符串是以字符'\0'为结尾的字符数组,也就是如果你定义"a"这样的字符串,那么实际内存存储的是'a'和'\0'两个字符。
当然这两个字符是存放在一个只读的内存区域,所以为什么一直说字符串是不可修改的,就是这个原因。
char A[] = "a";这样的做法,就是把只读内存中的'a'和'\0'复制一份用于初始化数组A,所以最后就是这样char A[]={'a','\0'};
页:
[1]