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

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

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

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

Например,

char name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.