我试图更多地了解char数组 使用以下代码
int main() {
char test[] = "hello";
char here[4] = "ola";
char bon[] = { 'w','o','r','d' };
char word[4] = { 'z','f','f','z' };
std::cout << test << std::endl;
std::cout << here << std::endl;
std::cout << bon << std::endl;
std::cout << word << std::endl;
return 0;
}
输出
hello
ola
wordhello
zffzwordhello
为什么它给了我这个输出而不是
hello
ola
word
zffz
答案 0 :(得分:0)
问题是在前两个语句中隐式添加了null-terminator字符('\0'
),但在显式设置数组元素的最后两个语句中没有。当您尝试打印出数组时,这会导致未定义的行为(这意味着输出可能会有所不同,或者应用程序可能会崩溃,具体取决于编译器)。 <<
运算符需要null终止符,因此它知道何时停止打印。您需要添加null-terminator,如下所示:
char bon[] = { 'w','o','r','d','\0' };
char word[5] = { 'z','f','f','z','\0' };