a16b2e27

Пояснения:


Записи 1.1.

static struct S1 { char c[4], *s; } s1 = { "abc", "def" }; Тип записи S1 относится к записи, содержащей массив символов c длиной 4 и ссылку на символ s. Переменная s1 - это некоторый экземпляр записи S1, инициируемый следующим образом:

char c[4] = "abc", *s = "def";

Поскольку запись была определена как static, то ее можно инициировать при определении.

static struct S2 { char *ss2; struct S1 ss1; } s2 = { "ghi", { "jkl", "mno" } }; Тип записи S2 относится к записи, содержащей ссылку на символ cp и экземпляр записи S1 - ss1. Переменная-запись s2 есть экземпляр записи типа S2, инициированный следующим образом:

char *ss2 = "ghi"; struct S1 ss1 = {"jkl","mno"};

Рис 1.1 изображает записи s1 и s2.


Рис 1.1

Записи 1.2.

PRINT2(c, Нужно напечатать какой-то символ.
s1.c[0], Это первый символ из элемента c записи s1 (рис.1.2-1).
*s1.s Это символ, на который указывает элемент s записи s1 (рис.1.2-2).


Рис.1.2-1


Рис.1.2-2

Записи 1.3.

PRINT2(s Нужно напечатать некоторую строку.
s1.c Это строка, на которую указывает элемент c записи s1. Напомним, что c=&c[0] (рис.1.3-1).
s1.s Это строка, на которую указывает элемент s записи s1 (рис.1.3-2).


Рис.1.3-1


Рис.1.3-2

Записи 1.4.


Рис.1.4-1

s2.cp


Рис.1.4-2

(s2.ss1).s

Записи 1.5.


Рис.1.5-1

++(s2.cp)


Рис.1.5-2

++((s2.ss1).s)




Начало  Назад  Вперед