c++ - 初始化char数组时空字符的重要性

标签 c++ c arrays

我是 C++ 的新手,我开始怀疑,如果在定义 char 数组时省略空字符会怎样?

例如,如果我用空字符定义一个字符数组:

char myarray[] = {'a', 'b', 'c', '\0'};

然后我在没有空字符的情况下定义它:

char myarray[] = {'a', 'b', 'c'};

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

感谢您的帮助:)

最佳答案

这意味着任何需要 char* 的东西作为参数,期望它是一个空终止字符串,将调用未定义的行为,并以某种方式失败*

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

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

关于c++ - 初始化char数组时空字符的重要性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19787718/

相关文章:

c++ - 什么会导致将指针地址写入 std::cout 崩溃?

c - 与C网络编程中的套接字相关的问题

arrays - 在 node.js v11.0.0^ 中进行更改后,使用 array.sort(a, b) 的正确方法是什么?

java - Java 中 N 维数组的大小可以改变吗?

c - 错误 : assignment makes integer from pointer without a cast (using gets)

c++ - 如何从 C++ 中的 NumericVector 中提取多个值

c++ - vector::push_back() 是否在进行浅拷贝以及如何解决这个问题

c++ - 如何在 Visual Studio 操作中输出新行?

c - 从文件读取数据并打印到另一个文件的程序

c - 使用函数在 C 中应用 2 个矩阵 3x3 中的 Hadamard 产品