通常在C++,字符数组按以下方式初始化,
char example[5]="cat";
Run Code Online (Sandbox Code Playgroud)
如果用""(只是双引号没有空格)初始化它会怎么样?
初始化后字符数组中的元素是什么?
Gri*_*han 12
声明
char temp[3] = "";
Run Code Online (Sandbox Code Playgroud)
和...一样
char temp[3] = {0};
// `\0` ascii value is 0
Run Code Online (Sandbox Code Playgroud)
记住初始化的半初始化数组的剩余元素0.
点:char temp[3] = ""是容易以type(意味着写入),所以其是优选的.
看起来甚至将它与此声明进行比较char temp[3] = {'\0'}; (它需要更多的字符type)而在char temp[3] = ""; 简单中(即使没有类型不匹配 - int/char).
它是一个3个字符的数组,初始化为三个空字符.
编辑(以下评论后):
来自K&R:
如果数组的初始值设定项少于指定的数量,则外部,静态和自动变量的缺失元素将为零.
...
字符数组是初始化的特例; 可以使用字符串代替大括号和逗号表示法:
char pattern [] ="ould";
是一个较长但速度相同的简写
char pattern [] = {'o','u','l','d','\ 0'};
"1. char数组(无论是普通字符,有符号字符还是无符号字符),char16_t数组,char32_t数组或wchar_t数组可以通过窄字符文字,char16_t字符串文字,char32_t字符串文字或宽字符串文字来初始化,分别用大括号括起来的适当类型的字符串文字.字符串文字值的连续字符初始化数组的元素.[例如:
char msg [] ="行%s上的语法错误\n";
显示一个字符数组,其成员使用字符串文字初始化.请注意,因为'\n'是单个字符,并且因为附加了尾随'\ 0',所以sizeof(msg)为25. - 结束示例]
...
"3.如果初始化器的数量少于数组元素,则未明确初始化的每个元素都应进行零初始化(8.5)."