- •Одномерные и двумерные массивы
- •Размещение массива в памяти
- •456. Объем памяти для массива
- •457. Инициализация массива
- •458. Доступ к элементам массива
- •459. Использование элементов массива в цикле
- •460. Использование констант при объявлении массивов
- •461. Передача массивов как параметров функций
- •462. Массивы как функции
- •463. Отличительная особенность символьных строк как массивов
- •464. Передача массивов в стек при вызове функций
- •465. Максимальный объем памяти, занимаемой массивом
- •466. Использование сверхбольшой модели памяти для больших массивов
- •Двухмерные массивы
- •Массивы строк
Массивы строк
В программах на языке С часто используются массивы строк. Например, сервер базы данных сверяет команды пользователей с массивом допустимых команд. В качестве массива строк в языке С служит двухмерный символьный массив. Размер левого измерения определяет количество строк, а правого — максимальную длину каждой строки. Например, в следующем операторе объявлен массив из 30 строк с максимальной длиной 79 символов:
char str_array[30][80];
Чтобы обратиться к отдельной строке массива, нужно указать только левый индекс. Например, вызов функции gets() с третьей строкой массива str_array в качестве аргумента можно записать так:
gets(str_array[2]);
Этот оператор эквивалентен следующему:
gets(&str_array[2][0]);
Из этих двух форм записи предпочтительной является первая.
Для лучшего понимания свойств массива строк рассмотрим следующую короткую программу, в которой на основе применения массива строк создан простой текстовый редактор:
/* Очень простой текстовый редактор. */
#include <stdio.h>
#define MAX 100
#define LEN 80
char text[MAX][LEN];
int main(void)
{
register int t, i, j;
printf("Для выхода введите пустую строку.\n");
for(t=0; t<MAX; t++) {
printf("%d: ", t);
gets(text[t]);
if(!*text[t]) break; /* выход по пустой строке */
}
for(i=0; i<t; i++) {
for(j=0; text[i][j]; j++) putchar(text[i][j]);
putchar('\n');
}
return 0;
}
Пользователь вводит в программу строки текста, заканчивая ввод пустой строкой. Затем программа выводит текст посимвольно.
Размер правого измерения указывать не нужно, если в вызывающей функции массив объявлен как **х и размещен динамически
