Операция доступа к элементу массива — операция "квадратные скобки", которая используется следующим образом:
имя_массива[индекс]
Эта операция относится к первичным и находится в самой высокой строке таблицы приоритетов (Приоритеты операций).
Имя массива — идентификатор, которому ставится в соответствие начальный адрес массива (адрес первого элемента).
Для доступа к элементу массива (его изменения, печати, присваивания значения другой переменной и т.д.) надо использовать операцию "квадратные скобки".
В скобках должно стоять целочисленное выражение, значение которого должно находиться в диапазоне от 0 до (размер массива – 1).
Примечание 1
В языке Си не выполняется проверка выхода за границу массива. За этим должен следить программист.
Пример 1
char id[8];
id[0] ='j';
Элементу номер 0 массива id присваивается код символа 'j'.
Результат операции доступа к элементу массива — значение, хранящееся по адресу необходимого элемента массива. Этот адрес определяется следующим образом:


Смещение — это разность между адресом данного элемента массива и начальным адресом массива.
Для одномерного массива смещение определяется по формуле:


Пример 2
char id[8];
id[3] = id[0];
Байт из элемента id[0] копируется в элемент id[3].
Адрес элемента id[3]:


Пример 3
float price[3];
price[num] = price[num-1]*2;
Если значение num равно 2, то price[2] = price[1]*2;
Адрес элемента price[2]:
начальный адрес массива price + смещение = начальный адрес массива price + 24
Для массива произвольной размерности смещение определяется по формуле:


Пример 4
int table[4][3]; /*table[длина 2-го измерения][длина 1-го измерения]*/
printf ("%d\n", table[2][1]); /*table[индекс2][индекс1]*/
Печатает целое число, хранящееся в 3-й строке 2-го столбца массива table .
Адрес элемента table[2][1]:
начальный адрес массива table + смещение =
начальный адрес массива table + (индекс2 (длина 1-го измерения ) + индекс1) длина элемента в байтах =
начальный адрес массива table + (23 + 1)4
Пример 5
/* Запоминает рост вклада по годам в массиве и печатает его */
#include <stdio.h>
int main()
{
const float investment = 6000, interest = .085;
float  rate;
double value[5];
int    year;

rate = 1 + interest;                    /* 108.5% от предыдущей суммы */
value[0] = investment;
year = 1;
while (year < 5)
  {
  value[year] = value[year-1] * rate;
  year += 1;                           /* year = year+1 */
  }
printf("начальный вклад: %.2f\n", value[0]);
year = 1;
while (year < 5)
  {
  printf("год %.d\n", year);
  printf("%.2f\n", value[year]);
  year += 1;                           /* year = year+1 */
 }
}