Пусть, например, объявлен массив элементов типа float.
float arr[10];
Чтобы получить доступ к 5-му элементу массива аrr, нужно написать аrr[5]. При этом индекс 5 умножается на размер переменной
Таким образом, результатом индексного выражения arr[i] является значение i-го элемента массива.
Для ссылки на элемент многомерного массива индексное выражение должно иметь несколько индексов, заключенных в квадратные скобки:
Идентификатор массива '[' Индексное выражение1 ']' '[' Индексное выражение2 ']'…
Такое индексное выражение интерпретируется слева направо, т. е. вначале рассматривается первое индексное выражение:
Идентификатор массива '[' Индексное выражение1 ']'
Результат вычисления этого выражения — это адрес первого элемента вложенного массива, с которым складывается индексное
Например, пусть объявлен трехмерный массив mass:
int mass [2] [5] [3];
Рассмотрим процесс вычисления индексного выражения mass [1] [2] [2].
1. Вычисляется выражения mass [1]. Индекс 1 умножается на размер элемента этого массива, которым является двухмерный массив, содержащий 5x3 элементов типа int. Получаемое значение складывается с начальным адресом массива mass. Результатом является адрес вложенного двухмерного массива размером (5x3) в трехмерном массиве mass.
2. Второй индекс 2 умножается на размер массива из трех элементов типа int и складывается с адресом mass [1].
3. Так как каждый элемент трехмерного массива — это величина типа int, то третий индекс 2 умножается на размер
4. Наконец, выполняется считывание значения полученного элемента массива
Если было бы указано mass [1] [2], то результатом был бы адрес массива из трех элементов типа int. Соответственно значением индексного выражения mass [1] является адрес двухмерного массива.
Имя'.' Поле
Имя"->"Поле
В первой форме имя представляет величину типа struct или union, а поле — это имя элемента структуры или объединения. Во второй форме выражение используется при работе с указателями на структуры или объединения. При этом поле — это имя выбираемого элемента структуры или объединения. То есть выражение
Имя "->" Поле
эквивалентно записи
"(*" Имя')'.Поле
Пример:
struct tree {float num;
int spisoc[5);
struct tree *left;
} tr[5], elem;
elem.left = & elem;
В приведенном примере используется операция выбора ('.') для доступа к полю left структурной переменной elem. Таким образом, элементу left структурной переменной elem присваивается адрес самой переменной elem, т. е. переменная elem хранит указатель на себя саму.
'(' Имя типа ')' Операнд.
Пример использования функции приведения типов при вычислении выражений:
int i;
float x;
х = (float)i+2.0;