gpt4 book ai didi

c - 为什么数值数组不以 '\0' 或空字符结尾?

转载 作者:太空狗 更新时间:2023-10-29 16:24:46 25 4
gpt4 key购买 nike

为什么数值数组不以空字符结尾?

例如,

char name[] = {'V', 'I', 'J', 'A', 'Y', '\0'};

但是在数字数组的情况下,最后没有空字符的符号......

例如,

int marks[] = {20, 22, 23};

这背后的原因是什么?

最佳答案

所问的问题包含一个隐藏的假设,即所有 char 数组都以空字符结尾。事实上,情况并非总是如此:此 char 数组不以 \0 结尾:

char no_zero[] = { 'f', 'o', 'o' };

必须以空字符结尾的 char 数组是用作字符串的数组,确实需要终止。

在您的示例中,char 数组仅以空字符结尾,因为您这样做了。编译器将为您插入空字符的唯一地方是在从字符串文字声明 char 数组时,例如:

char name[] = "VIJAY";

// the above is sugar for:
char name[] = { 'V', 'I', 'J', 'A', 'Y', '\0' };

在这种情况下,将自动插入空字符以使结果数组成为有效的 C 字符串。其他数字类型的数组不存在这样的要求,它们也不能从字符串文字中初始化。换句话说,将零附加到数值数组将毫无用处,因为没有代码使用零来查找数组末尾,因为零是一个完全有效的数字。

指针数组有时以 NULL 指针结尾,这是有道理的,因为 NULL 指针不能与有效指针混淆。 argv 字符串数组,由 main() 接收,是此类数组的一个示例。

关于c - 为什么数值数组不以 '\0' 或空字符结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19331941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com