Язык программирования Си для персонального компьютера | страница 68
Выбор элемента
Синтаксис:
<выражение>.<идентификатор>
<выражение> -> <идентификатор>
Выражение выбора элемента позволяет получить доступ к элементу структуры или объединения. Выражение имеет значение и тип выбранного элемента.
В первой синтаксической форме <выражение> представляет значение типа struct или union, а идентификатор именует элемент специфицированной структуры или объединения. Во второй синтаксической форме <выражение> представляет указатель на структуру или объединение, а идентификатор именует элемент специфицированной структуры.
Обе синтаксические формы выражения выбора элемента дают одинаковый результат. Запись
<выражение> -> <идентификатор>
для случая, когда <выражение> имеет тип указатель, эквивалентна записи
(*<выражение>).<идентификатор>
однако более наглядна.
Примеры:
struct pair {
int a;
inl b;
struct pair *sp;
} item, list[10];
item.sp = &item; /* пример 1 */
(item.sp)->a = 24; /* пример 2 */
list[8].b = 12; /* пример 3 */
В первом примере адрес структуры Нет присваивается элементу sp этой же структуры. В результате структура item содержит указатель на себя.
Во втором примере используется адресное выражение item.sp с операцией выбора элемента ->, присваивающее значение элементу а. Учитывая результат примера 1, пример 2 эквивалентен записи
item.a = 24;
В третьем примере показано, каким образом в массиве структур осуществить доступ к элементу отдельной структуры.
Операции и L-выражения
В зависимости от используемых операций выражения подразделяются на первичные, унарные, бинарные, тернарные, выражения присваивания и выражения приведения типа.
Первичные выражения рассмотрены в разделах 4.2.4, 4.2.5, 4.2.6.
Унарное выражение состоит из операнда с предшествующей ему унарной операцией.
Синтаксис:
<унарная-операция> <операнд>
Унарные операции рассмотрены в разделе 4.3.2.
Бинарное выражение состоит из двух операндов, разделенных бинарной операцией.
Синтаксис:
<операнд1> <бинарная-операция> <операнд2>
Бинарные операции рассмотрены в разделах 4.3.3 — 4.3.9.
Тернарное выражение состоит из трех операндов, разделенных знаками условной операции "?:".
Синтаксис:
<операнд1> ? <операнд2> : <операнд3>
Условная операция рассмотрена в разделе 4.3.10.
Выражения присваивания используют унарные или бинарные операции присваивания. Унарными операциями присваивания являются инкремент "++" и декремент "--". Бинарные операции присваивания — это простое присваивание "=" и составные операции присваивания. Каждая составная операция присваивания представляет собой комбинацию какой-либо бинарной операции с простой операцией присваивания.