gpt4 book ai didi

c++ - 以这种方式初始化的 char 数组是否自动添加了空终止符?

转载 作者:太空狗 更新时间:2023-10-29 23:38:50 25 4
gpt4 key购买 nike

是否像这样初始化了一个字符数组:

char foo[] = {0x31, 0x32, 0x33}; //123

在它的末尾添加一个空终止符,这样 foo 的内存数据看起来像 0x31323300?或者这只是将 0x313233 写入内存?此外,无论这种初始化方法如何,编译器都将 foo 视为字符串文字吗?

最佳答案

不,如果您不指定数组的大小并且不使用字符串文字作为初始化程序,则数组的大小和内容将与您拥有的初始化程序完全匹配。

在您的情况下,数组 foo 将正好是三个 char 元素,其中包含(按顺序)0x310x320x33

如果您使用字符串文字作为初始值设定项,则数组将包含终止符。如果您指定的大小大于初始化器的数量(例如 char foo[4] 在您的示例中使用三个初始化器),则其余元素将被零初始化(等于字符串终止符)。

另请注意,即使您使用字符串文字作为初始化程序,但指定的大小小于 初始化程序,数组也不会终止。

关于c++ - 以这种方式初始化的 char 数组是否自动添加了空终止符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52399222/

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