Основы программирования на языке C


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


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

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

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

char m1[ ]={ 'T','o','л','ь','k','o',' ','o','г'','p','a','н','и','ч','ь','т','e','c','ь',' ',o','д','н','o','й',' ','c','т','p','o','k','o','й','.','\0' }

Без символа 0 мы имеем массив символов, а не строку. Для той и другой формы компилятор подсчитывает символы и таким образом получает размер памяти. Как и для других массивов, имя m1 является указателем на первый элемент массива:

m1 == &m1[0], *m1 == 'T', и *(m1+1) == m1[1] == 'o'

и т.д.

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

char *m3="\n Символьная строка.";

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

static char m3[ ]="\n Символьная строка.";

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




Содержание  Назад  Вперед