Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_по_программированию.doc
Скачиваний:
80
Добавлен:
02.04.2015
Размер:
4.77 Mб
Скачать

Массивы строк

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

Для хранения списка символьных строк используется двумерный массив размером ns, гдеn– максимальное количество строк (студентов в группе, инструментов в наборе), s – максимальное количество символов в строке с учетом символа окончания строки ‘\0’.

Например,

charname2530;

Для хранения массива nameв оперативной памяти будет отведено 750 байт непрерывного пространства для хранения 25 строк длиной не более 30 символов каждая (с учетом символа окончания строки).

Инициализация двумерного массива выполняется следующим образом:

char name2530=

“Строка 1”,

“Строка 2”,

:

“Строкаn”

;

Внешние скобки ограничивают сам массив, а совокупность внутренних скобок иограничивают текст каждой строки. Учитывая, что символы “ являются ограничителями символьной строки, то вместо внутренних скобок можно использовать символы “.

Например,

char g315=

“Иванов И. И.”,

“Антонов Л. А.”,

“Попов С. М.”,

;

Для экономии оперативной памяти и избежания переполнения выделенного пространства под строку (что приводит к потери конечных символов, в том числе символа окончания строки ‘\0’) применяют описание совокупности строк с использованием одномерного массива указателей, размер которого равен числу инициализируемых строк.

Например,

char *pg3=

“Иванов И. И.”,

“Антонов Л. А.”,

“Попов С. М.”,

;

Такое описание определяет массив, где количество строк равно количеству инициализируемых строк, а количество столбцов каждой строки массива определяется количеством символов в ней плюс символ окончания строки ‘\0’.

В оперативной памяти выделяются ячейки как для хранения массива указателей, так и для хранения списка строк.Схема выделения оперативной памяти имеет вид

pg[0]

pg[1]

pg[2]

pg[0]

И

в

а

н

о

в

И

.

И

.

\0

pg[1]

А

н

т

о

н

о

в

Л

.

А

.

\0

pg[2]

П

о

п

о

в

С

.

М

.

\0

Компилятор выделяет три ячейки памяти для хранения элементов массива указателей pg, а также необходимое количество ячеек для хранения списка строк. Адреса каждой из строк записываются в соответствующие ячейки массиваpg.