инициализация строкового массива

Это продолжение другого вопроса , который у меня есть.

Рассмотрим следующий код:

char *hi = "hello";

char *array1[3] = 
{
    hi,
    "world",
    "there."
};

Он не компилируется, к моему удивлению (очевидно, я не знаю синтаксис C так хорошо, как я думал) и генерирует следующую ошибку:

  error: initializer element is not constant

Если я заменяю char * на char [], он компилируется нормально:

char hi[] = "hello";

char *array1[3] = 
{
    hi,
    "world",
    "there."
};

Может кто-нибудь объяснить мне, почему?

10
задан Community 23 May 2017 в 10:24
поделиться