- C/C++ 中所有字符串字面值都由编译器自动在末尾添加一个空字符,即默认以 \0 结尾。
eg:字面值 "tang" 实际上是 "tang\0",字面值"tang\0" 实际上是"tang\0\0"
- char 数组
char StrArray[4];// 如果数组 StrArray 不是全局变量,内容是随机的。 char StrArray[4] = {'B', 'u'};// 这里会默认给剩余的 2 个元素补上 \0,若 4 个字符全指定了,就不会在最后加上 \0,因为超出数组范围了。 char Str[] = {'t', 'a', 'n', 'g'};// 不会以 \0 结尾 char Str1[] = "tang";// 因为字符串字面值是以 \0 结尾的,所以数组 Str1 也是以 \0 结尾 char Str2[] = "tang\0";// 尽管字面值有一个 \0,编译器还是会默认给字符串字面值后面加一个 \0,即这个字符串常量实际上是 "tang\0\0",所以数组 Str2 实际会以这个字符串常量被默认添加的那个 \0 结尾。
所以:sizeof(Str) 为 4;sizeof(Str1) 为 5;sizeof(Str2) 为 6。
- char* 指针