too many initializers for 'char []'

264
06 сентября 2017, 14:54
#include <iostream>
using namespace std;
    int main(){
    char a[] = {"qqq","www","eee"};
    cout << a[1];
    return 0;
}

Если написать string а не char то все работает, просто я немного не понял как это должно работать, пример взял из книги, там вот так было написано и я толком не понял там объявляется массив строк или массив символов, если массив строк то надо было написать вместо char string но почему написано char не пойму и поэтому до конца не ясно что хотел сказать автор, может это ошибка в книге?

Answer 1
char a[] = {"qqq","www","eee"};

Здесь объявлен массив char'ов, т.е. массив отдельных символов. Если бы вы написали

char a[] = {'q','w','e'};

все было бы верно. Но у вас - массив строковых литералов, а это в C++ - const char *. Поэтому правильнее всего -

const char * a[] = {"qqq","www","eee"};

Когда вы пишете

string a[] = {"qqq","www","eee"};

то просто каждый строковый литерал преобразуется в объект типа string...

Кроме того, поскольку строка - это массив символов, можно объявлять и так:

char a[] = {"qqq"};

В этом случае вы объявляете один массив char'ов - три из которых q, а четвертый - нулевой символ. a при этом при использовании является адресом первого элемента (первой буквы q).

READ ALSO
Динамические структуры в c++

Динамические структуры в c++

Прохожу задание в книге Алекса ЭллайнаПосле темы указателей и ссылок в одном из проверочных заданий, он просит написать написать программу...

308
Error C2075 при инициализации массива

Error C2075 при инициализации массива

Вы пытаетесь захватить info по значению, а так нельзя - это массивЗахватывайте по ссылке - &info

261
Конвертация YAW PITCH ROLL в траекторию для UE4

Конвертация YAW PITCH ROLL в траекторию для UE4

У меня есть массив данных (YPR) снятый с показаний гироскопа при его движении по определенной траектории (примерно по 100 значений на секунду)Я...

256
class перед возвращаемым типом

class перед возвращаемым типом

Зачем пишут class перед возвращаемым типом?

242