Объявление массивов.
СИНТАКСИС: тип_элемента aname[размер]; /*неинициализированный массив*/
тип_элемента aname[размер]={список инициализаторов}
/*инициализированный массив*/
ПРИМЕР: #define A_SIZE 5
…
double a[A_SIZE];
char vowels[] = {‘A’, ‘E’, ‘I’, ‘O’, ‘U’};
ОПИСАНИЕ: Объявление неинициализированного массива резервирует память для массива aname, занимающего размер ячеек памяти. В каждой ячейке памяти может храниться один элемент данных типа тип_элемента (double, int или char). К отдельным элементам можно обращаться при помощи индексированных переменных aname[1], …, aname[размер]. Для указания размерности массива используется константа типа int.
В объявлении массива с инициализацией размер, указанный в квадратных скобках, необязателен, так как может быть определён длинной списка инициализации. Список инициализации состоит из выражений-констант типа, указанного в тип_элемента, и отделенных друг от друга запятыми. Элемент 0 инициализируемого массива должен быть первым в списке инициализации, элемент1 –вторым, и т.д.
Индексы массивов.
Индексирование используется для отличия отдельных элементов, а также для обеспечения доступа к отдельным элементам массива. В качестве индекса можно использовать любое выражение типа int. Однако для обращения к элементам массива значение индекса должно лежать между нулём и значением, на единицу меньшим объявленного размера массива.
Важно представлять себе разницу между значением индекса массива и значением элемента массива. Рассмотрим первоначальный массив
x[0] x[1] x[2] x[3] x[4] x[5] x[6] x[7]
Индексированная переменная x[i] ссылается на отдельный элемент этого массива. Если значение I равно 0, значение индекса равно 0, обращаемся к элементу x[0]. В данном случае x[0] равно 16,0. Если i равно 2, значение индекса будет 2, а значение x[i] будет равно 6,0. Если i равно 8, индекс равен 8 и в этом случае мы не в состоянии указать значение x[i], поскольку значение индекса лежит вне допустимого диапазона.
В таблице представлены примеры операторов с использованием массива, приведенного выше. Переменная i - типа int со значением 5.
Оператор |
Пояснение |
printf(“%d %.lf”, 4, x[4]); |
Выводит 4 и 2,5 (значение x[4]) |
printf(“%d %.lf”, i, x[i]); |
Выводит 5 и 12,0 (значение x[5]) |
printf(“%.lf”, x[i]+1); |
Выводит 13,0 (значение x[5] плюс 1) |
printf(“%.lf”, x[i]+i); |
Выводит 17,0 (значение x[5] плюс 5) |
printf(“%.lf”, x[i+1]); |
Выводит 14,0 (значение x[6]) |
printf(“%.lf”, x[i+i]); |
Недопустимая попытка вывода x[10] |
printf(“%.lf”, x[2*i]); |
Недопустимая попытка вывода x[10] |
printf(“%.lf”, x[2*i-3]); |
Выводит -54,5 (значение x[7]) |
printf(“%.lf”, x[i++]); |
Выводит 12,0 (значение x[5]) затем присваивает значение 6 переменной i |
printf(“%.lf”, x[i--]); |
Присваивает 5(6-1) переменной I, затем выводит 14,0 (значение x[5]) |
x[i-1] = x[i] |
Присваивает 12,0(значение x[5] x[4]) |
x[i1] = x[i+1] |
Присваивает 14,0(значение x[6] x[5]) |
x[i]-1 = x[i] |
Неправильное выражение присваивания |