c++ - 用引号和花括号初始化 char 数组

标签 c++ arrays initializing

我有点困惑。这些代码之间的逻辑区别是什么?

#include <iostream>
using namespace std;
int main(){
    char a[5]="ABCD"; // this
    cout << a;
    return 0;
}

第二个是

char a[5]={"ABCD"}; // this

第三个是

char a[5]={'A','B','C','D'}; // this

最佳答案

char a[5]={"ABCD"};
char a[5]={'A','B','C','D','\0'};

在这两种情况下,字符数组 a 都被声明为具有 5 个 char 类型元素的大小:组成单词 "ABCD" 的 4 个字符,加上最后一个空字符 ('\0'),它指定序列的结尾,在第二种情况下,当使用双引号 (") 时,它会自动附加。注意添加空字符分隔通过逗号。用双引号 ("") 括起来的一系列字符称为 字符串常量。C 编译器可以自动在该处添加一个空字符 '\0' end of string 常量表示字符串结束。

来源:This link可以更好地帮助你

关于c++ - 用引号和花括号初始化 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30650430/

相关文章:

c++ - 创建指向 unsigned char[] 的指针并将其传递给 sf::SoundBuffer::loadFromMemory

C - 在不初始化的情况下在函数中传递局部变量

c++ - 模板特化,其中参数是用于元编程的非类型参数化模板

c - 如果我通过指针给了数组值,为什么我无法使用数组引用更改数组中的值?

c++ - 在控制台中读取一行直到换行

ruby:如果项目的某些键相同,如何从数组中获取第一个散列项?

java - 父类(super class)中未使用的变量

c++ - 使用哪个容器和锁定机制?

c++ - 关于C++中的文件输入/输出和异常