Что возвращают инициализаторы массива, такие как { 'a', 'b', 'c' }
? Я понимаю, что использование инициализатора выделяет смежные блоки памяти и возвращает адрес в первый блок.
Следующий код не работает:
char *char_ptr_1 = { 'a', 'b', 'c', '\0' };
С другой стороны, это работает нормально:
char char_array[] = { 'a', 'b', 'c', '\0' };
char *char_ptr_2 = char_array;
char_array
хранит адрес в первом блоке памяти, что объясняет, почему я могу назначить значение char_array
на chat_ptr_2
. Преобразует ли C значение, возвращаемое инициализатором, в то, что может быть сохранено в указателе?
Я смотрел онлайн и нашел пару ответов, в которых говорилось о различии между массивами и указателями, но они мне не помогли.