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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Оглавление книги


Генерация: 1.398. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз