C++ 对字符数组感到困惑
我试图更多地理解字符数组 使用以下代码C++ 对字符数组感到困惑,c++,C++,我试图更多地理解字符数组 使用以下代码 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 <<
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
word
zffz
问题是在前两条语句中隐式添加了空终止符(
'\0'
),但在后两条语句中没有显式设置数组元素。当您试图打印出数组时,这会导致未定义的行为(这意味着输出可能会有所不同,或者应用程序可能会崩溃,具体取决于编译器)。问题是在前两条语句中隐式添加了空终止符('\0'
),但在后两条语句中没有显式设置数组元素。当您试图打印出数组时,这会导致未定义的行为(这意味着输出可能会有所不同,或者应用程序可能会崩溃,具体取决于编译器)。此处结尾缺少一个'\0'
字符:字符bon[]={'w','o','r','d'}
和“word”相同。如果将字符串传递给输出例程,则例程不知道该字符串的长度。粗略地说:它会一直打印,直到到达第一个'\0'
字符。这里的结尾缺少一个'\0'
字符:char bon[]={'w','o','r','d'
和“word”相同。如果将字符串传递给输出例程,则例程不知道该字符串的长度。粗略地说:它一直打印到第一个'\0'
字符。@RudyVelthuis是的,我知道,正如你所看到的,我在回答的第一句话中已经说过。我不是有意告诉你的。我只是忘记了正确的地址。我的意思是为了这个手术。对不起。@RudyVelthuis是的,我知道,正如你所看到的,我在回答的第一句话中已经说过。我不是有意告诉你的。我只是忘记了正确的地址。我是说这次行动的,对不起。
hello
ola
word
zffz
char bon[] = { 'w','o','r','d','\0' };
char word[5] = { 'z','f','f','z','\0' };