Язык Си - руководство для начинающих.

Массивы символьных строк и их инициализация.

     При определении массива символьных строк необходимо сообщить компилятору требуемый размер памяти. Один из способов сделать это - инициализировать массив при помощи строковой константы. Так как автоматические массивы нельзя инициализировать, необходимо для этого использовать статические или внешние массивы. Например, оператор.

Char m1[ ] = "Только ограничьтесь одной строкой.";

Инициализировал внешний (по умолчанию) массив m1 для указанной строки. Этот вид инициализации является краткой формой стандартной инициализации массива.

Char m1[ ] = {'Т', 'о', 'л', 'ь', 'к', 'о', ' ',

                   'о', 'г', 'р', 'а', 'н', 'и', 'ч',

                   'ь', 'т', 'e', 'с', 'ь', ' ', 'о',

                   'д', 'н', 'о', 'й', ' ', 'с', 'т',

                   'р' 'о', 'к', 'о', 'й', ' .', '\0'};

(Обратите внимание на замыкающий нуль-символ. Без него мы имеем массив символов, а не строку.) Для той и другой формы (а мы рекомендуем первую) компилятор подсчитывает символы и таким образом получает размер массива.

Как и для других массивов, имя m1 является указателем на первый элемент массива:

M1 == &m1[0], *m1 == 'Т', и *(m1 + l) == m1[1] == 'о',

Действительно, мы можем использовать указатель для создания строки. Например:

Char *m3 = " \n Достаточно обо мне - как вас зовут?";

Это почти то же самое, что и.

Static char m3[ ] = "\n Достаточно обо мне - как вас зовут?" ;

Оба описания говорят об одном: m3 является указателем строки со словами " Как вас зовут?" . В том и другом случае сама строка определяет размер памяти, необходимой для ее размещения. Однако вид их не идентичен.