LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 350|回复: 0

初始化以 null 结尾的字符序列

[复制链接]
发表于 2024-2-20 23:12:29 | 显示全部楼层 |阅读模式
因为字符数组是普通数组,所以它们遵循与这些数组相同的规则。例如,要使用一些预定的字符序列初始化一个字符数组,我们可以像任何其他数组一样执行此操作:

1
char myword[] = { 'H', 'e', 'l', 'l', 'o', '\0' };

上面声明了一个由 6 个元素组成的数组,这些元素使用构成单词的字符加上末尾的 null 字符初始化。

但是字符元素数组还有另一种初始化方式:直接使用字符串文字。

在前几章的一些示例中使用的表达式中,字符串文字已经多次出现。这些是通过将文本括在双引号 () 之间来指定的。例如:char"Hello"'\0'"

1
"the result is: "

这是一个字符串文本,可能在前面的一些示例中使用。

用双引号 () 括起来的字符序列是文本常量。事实上,它们的类型是以 null 结尾的字符数组。这意味着字符串文本始终在末尾自动附加一个 null 字符 ()。

因此,调用的 char 元素数组可以通过以下两个语句之一使用以 null 结尾的字符序列进行初始化:"'\0'myword

1
2
char myword[] = { 'H', 'e', 'l', 'l', 'o', '\0' };
char myword[] = "Hello";

在这两种情况下,字符数组的大小都声明为 6 个元素 类型:组成单词的 5 个字符加上最后一个 null 字符 (),它指定序列的结尾,在第二种情况下,当使用双引号 () 时,它会自动附加。

请注意,这里我们谈论的是在声明字符数组时初始化它,而不是稍后为它们分配值(一旦它们已经声明)。事实上,由于字符串文本是常规数组,因此它们具有与这些数组相同的限制,并且不能赋值。

表达式(一旦 myword 已按上述方式声明),例如:mywordchar"Hello"'\0'"

1
2
myword = "Bye";
myword[] = "Bye";

将无效,就像两者都无效:

myword = { 'B', 'y', 'e', '\0' };

这是因为无法为数组赋值。但请注意,它的每个元素都可以单独分配一个值。例如,这是正确的:

myword[0] = 'B';
myword[1] = 'y';
myword[2] = 'e';
myword[3] = '\0';


您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表