用引号和花括号初始化字符数组

Asi*_*taq 4 c++ arrays initializing

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

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

其次是

char a[5]={"ABCD"}; // this
Run Code Online (Sandbox Code Playgroud)

第三是

char a[5]={'A','B','C','D'}; // this
Run Code Online (Sandbox Code Playgroud)

New*_*der 5

char a[5]={"ABCD"};
char a[5]={'A','B','C','D','\0'};
Run Code Online (Sandbox Code Playgroud)

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

来源:此链接可以更好地帮助您