Первая инициализация; это означает «объявить массив из 7 char
в стеке и заполнить первые 3 элемента 'a'
, 'b'
, 'c'
, а остальные элементы '\0'
».
Во втором случае вы не инициализируете массив ни к чему. Затем вы пытаетесь присвоить массиву, который никогда не будет действительным. Как-то так "сработало бы":
const char *s;
s = "abc";
Но значение будет немного другим (s
теперь является указателем , а не массивом ). В большинстве ситуаций разница минимальна. Но есть несколько важных предостережений, например, вы не можете изменять содержимое. Кроме того, sizeof(s)
даст вам размер указателя, тогда как в исходном коде он даст вам 7 (размер массива).
Рекомендуется прочитать следующее: http://c -faq.com / charstring / index.html .