前方高能

char a[4]={'a','b','c','d'};
cout<<a<<endl;

这将输出什么呢,是abcd,实际上是abcdPpB

这就有点神奇

字符数组

char +标识符+[],注意字符数组的最后一定会有’\0’,

例如char[]="abcd",这就是一个合法的赋值,但是char[4]="abcd"是不合法的因为带双引号的为字符串,赋值给字符数组时编译器会自动加上'\0'这时需要5个空间

原因

因为本来是要加上’\0’的,但是这时位子不够了,编译器只好帮它扩扩容,也就是说这是字符数组(其实现在已经不是字符数组了)长度已经不是4了,编译器会为后面几个位子附上值(不是随机的,我也有点不清楚,这样解释先),因此后面会多输出一些。但是如果开始就把长度设为5,这时’\0’就有位子放了,也就不会多出后面那些奇奇怪怪的字符