arrays - 何时/为什么需要 '\0' 来标记 (char) 数组的结尾?

标签 arrays c char c-strings null-terminated

所以我刚刚阅读了一个示例,了解如何创建表示字符串的字符数组。

空字符\0被放在数组的末尾,用来标记数组的结束。这是必要的吗?

如果我创建了一个字符数组:

char line[100]; 

然后说:

"hello\n"

在其中,字符将放在前六个索引 line[0] - line[6],因此数组的其余部分将填充还是空字符?

这本书说,这是一种约定,例如,字符串常量 "hello\n" 放在字符数组中并以 \0 结尾。

也许我没有完全理解这个主题,很高兴得到启发。

最佳答案

\0 字符不标记“数组的结尾”。 \0 字符标记存储在 char 数组中的 string 的结尾,如果(且仅当)该 char 数组旨在存储一个字符串。

字符数组就是一个字符数组。它存储独立的整数值(char 只是一种小整数类型)。字符数组不必以 \0 结尾。 \0 在 char 数组中没有特殊含义。它只是一个零值。

但有时字符数组用于存储字符串。字符串是以 \0 结尾的字符序列。因此,如果您想将 char 数组用作字符串,则必须以 \0 结束您的字符串。

因此,关于 \0 是“必要的”这个问题的答案取决于您在 char 数组中存储的内容。如果您正在存储一个字符串,那么您必须用\0 来终止它。如果您存储的不是字符串,那么 \0 就没有任何特殊意义。

关于arrays - 何时/为什么需要 '\0' 来标记 (char) 数组的结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40821419/

相关文章:

java - 如何让 Java 在我的场景中检测按键?

ios - 快速解析Json数据

javascript - 使用 highchart 设置符号标记

c - Opencv cvSetImageROI坐标问题

c++ - 我无法理解 C++ 中 char 指针操作的索引

javascript - JavaScript 中的回文

C99 单行比较语法快捷方式

c - 以下 c 代码给出输出 1 2 3 4 5 。代码是如何执行的?

java - 分析程序时出现大量 char[] 实例

java - 我做了一个 for 循环来交换字符串中的两个 indiv char 变量