初始化char数组时null字符的重要性

jje*_*omi 1 c c++ arrays

我是C++的新手,我开始想知道,如果在定义char数组时保留null字符会发生什么?

例如,如果我使用null字符定义char数组:

char myarray[] = {'a', 'b', 'c', '\0'};
Run Code Online (Sandbox Code Playgroud)

然后我定义它没有空字符:

char myarray[] = {'a', 'b', 'c'};
Run Code Online (Sandbox Code Playgroud)

在这种情况下,空字符的重要性是什么?以上示例中是否缺少空字符会导致以后出现一些问题?...您是否建议在以这种方式定义char数组时始终包含或排除空字符?

感谢您的任何帮助 :)

jua*_*nza 8

这意味着任何带有char*as参数的东西,期望它是一个以null结尾的字符串,都会调用未定义的行为,并以某种方式失败*.

一些例子strlen,std::string(const char*)构造函数,... 的std::ostream operator<<专业化char*...

*未定义的行为意味着它甚至可以"正确"工作,但不能保证这是可重现的.

  • 可能会失败,我们处于未定义的行为领域. (2认同)