Невозможно создать массив типа const char*

У меня есть что-то, возвращаемое как const char*, и я хотел бы сохранить это в массиве.

Я попробовал это:

const char* book[amtBooks] = "";

и получаю эту ошибку:

error: array must be initialized with a brace-enclosed initializer

, 👍1

Обсуждение

А как насчет const char* book[amtBooks] = { NULL };. Это инициализирует каждую книгу нулевым указателем., @Kwasmich


1 ответ


Лучший ответ:

2
  • const char* book[amtBooks] — это массив указателей.
  • "" — это массив символов (только один символ NUL).

Вы можете инициализировать массив символов с помощью массива символов:

const char foo[] = "hello";

Вы также можете инициализировать указатель на char с помощью массива char:

const char *bar = "good bye";

Это работает благодаря функции «распада в указатель» в C и C++.

Но инициализация массива указателей массивом символов просто делает не имеет смысла. Массив указателей на char можно инициализировать как

const char *book[] = {"hello", "good bye"};
,