Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
aip-50-60.docx
Скачиваний:
1
Добавлен:
11.09.2019
Размер:
76.6 Кб
Скачать

Инициализация массивов.

Имеется три способа инициализации массивов:

  • По умолчанию во время их создания. Применимо только к глобальным и статическим (static) массивам.

  • Явно во время создания при помощи констант инициализации.

  • Во время выполнения программы при присваивании или копировании данных в массив.

Для инициализации массива во время создания можно использовать только константы. Если элементы массива должны получать значения из переменных, то в программном коде должны быть явные операторы инициализации массива.

Инициализация по умолчанию.

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

Явная инициализация.

Аналогично описаниям и инициализации переменных типов int, char, float, double и других вы можете инициализировать массивы. Стандарт ANSI С позволяет задавать и инициализирующие значения любого массива, глобального или иного, описанного в любой части программы. Следующий фрагмент кода иллюстрирует описание и инициализацию четырех массивов:

intiarray[3] = {-1,0,1};

static float fpercent[4] = {1.141579,0.75,55E0,-.33E1} ;

static int idecimal[3] = {0,1,2,3,4,5,6,7,8,9};

char cvowels[] = {'A','a','E,'e','I','i','0','o','U','u'};

Инициализация безразмерных массивов.

Для большинства компиляторов безразлично — указываете ли вы размер массива, или задаете список фактических значений; важно указать либо то, либо другое. Например: в программах часто описывается набор собственных сообщений об ошибках. Это можно сделать двумя способами. Вот первый из них:

charszInput_Error[37] = "Pleaseenteravaluebetween 0 — 9:\n";

/*Пожалуйста, введите число от 0 до 9*/

char szDevice_Error[16] = "Disk not ready\n";

/*Дискнеготов*/

char szMomtor_Error[32] = "Program needs a color monitor.\n";

/*Программетребуетсяцветноймонитор*/

char szWarning[44]="This operation will erase the active file!\n";

/*Данная операция уничтожит активный файл*/

При таком подходе 2 -необходимо считать количество символов в строке, не забывая добавить 1, чтобы учесть невидимый null-символ окончания строки \0. Это, в лучшем случае, очень утомительный для глаз метод, который чреват многими ошибками. При втором способе, показанном ниже, используются безразмерные массивы, и язык С автоматически определяет их размер:

char szInput_Error[] = "Please enter a value between 0 — 9:\n";

char szDevice_Error[] = "Disk not ready\n";

char szMomtor_Error[] = "Program needs a color monitor.\n";

char szWarning[] = "This operation will erase the active file!\n";

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

  1. Доступ к элементам массива. Инициализация массивов и классы памяти.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]