gpt4 book ai didi

c++ - 声明为连续重叠的字符数组

转载 作者:行者123 更新时间:2023-12-02 11:19:10 25 4
gpt4 key购买 nike

我试图声明两个字符数组,一个接一个。当我这样做时,数组似乎彼此重叠。

#include <iostream>

int main(){
char cmnd[2] = {'l', 's'};
char flags[1] = {'a'};
std::cout << "cmnd array: " << cmnd << std::endl;
std::cout << "flags array: " << flags << std::endl;
}

此代码的输出将变为:

cmnd array: ls
flags array: als

根据输出,我的标志数组应该只包含 {'a'} 实际上包含 {'a','l','s'}。< br/>为什么会出现这种情况?预先感谢您对此问题的任何见解。

最佳答案

在 C++ 中,所有纯 char 字符串实际上都称为空终止字节字符串

这个空终止符告诉所有处理此类字符串的函数字符串在哪里结束。如果字符串缺少空终止符,它们将超出范围,您将得到 undefined behavior .

如果您希望将字符数组用作字符串,则需要确保它们包含空终止符。在您的情况下,这非常简单:初始化时不要指定数组的大小并使用文字字符串:

char cmnd[] = "ls";
char flags[] = "a";

现在 cmnd 将是一个由三个字符组成的数组,并初始化为包含'l''s' 和空终止符 '\0'。同样,flags 将是一个由两个字符组成的数组,初始化为 'a''\0'

关于c++ - 声明为连续重叠的字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60145041/

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