инициализировать массив символов кавычками и фигурными скобками

Я немного смущен. В чем логическая разница между этими кодами?

#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

2

Решение

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

В обоих случаях массив символов объявляется с размером 5 элементов типа char: 4 символа, составляющие слово «ABCD», плюс последний нулевой символ ( ‘\ 0’), который определяет конец последовательности и что во втором случае при использовании двойных кавычек («) он добавляется автоматически. Внимание, добавление нулевого символа через запятую. Последовательность символов, заключенная в двойные кавычки (» «), называется строковая константа. Компилятор C может автоматически добавлять нулевой символ '\0' в конце строковой константы, чтобы указать конец строки.

Источник:Эта ссылка может помочь тебе лучше

3

Другие решения

Первые два являются назначением char[5] источник к char[5] массив только с другим синтаксисом. (5 — четыре буквы плюс нулевой терминатор)

Последний также будет делать то же самое, но он явно не указывает нулевой терминатор. Так как вы назначаете char[5]последний будет по-прежнему заполнять нулем оставшееся пространство, эффективно добавляя нулевой терминатор и действуя так же, но последний не выдаст ошибку компилятора, если вы назначите char[4]; это просто оставит вас с неопределенным массивом символов.

0

По вопросам рекламы [email protected]