Задачи по языку С

       

Записи 2.1.


struct S1 { char *s; int i; struct S1 *s1p; }; Тип записи S1 относится к записи, содержащей ссылку на символ s, целое i и ссылку s1p на запись типа S1. Но это только описание, никакого экземпляра записи типа S1 не определяется.
static struct S1 a[] = { { "abcd", 1, a+1 }, { "efgh", 2, a+2 }, { 'ijkl", 3, a } }; Здесь a - массив из трех элементов типа S1, т.е. записей S1. Поскольку a определялся как static, то его можно инициировать в самом определении.
struct S1 *p = a; Переменная p описывается как ссылка на запись S1 и инициируется значением, указывающим на первый элемент a.

На рис.2.1 изображены массив a и ссылка p.


Рис.2.1




PRINT3(s, Должны быть отпечатаны строки.
a[0].s Это строка, на которую указывает элемент s записи, являющейся первым элементом массива a (рис.2.2-1).


Рис.2.2-1

p->s

Это строка, на которую указывает элемент s записи, на которую указывает p (рис.2.2-2).


Рис.2.2-2

a[2].s1p->s

Это строка, на которую указывает элемент s записи, на которую, в свою очередь, указывает элемент s1p записи, являющейся третьим элементом a (рис.2.2-3).


Рис.2.2-3




for (i=0; i Переменная i принимает значения 0 и 1.
PR(d, Нужно напечатать некоторое целое.
--((a[i]).i) Операция уменьшения применяется к целому, хранящемуся в элементе i записи, которая есть i-й элемент a. (На рис.2.3-1 показан случай для i=0.)


Рис.2.3-1

PR(c,

Нужно напечатать символ.

++(((a[i]).s)[3])

Операция увеличения применяется к четвертому символу строки, на которую указывает элемент записи, которая есть i-й элемент a. (На рис.2.3-2 показан случай для i=0.)


Рис.2.3-2




++(p->s) Увеличивается элемент s записи, на которую указывает p, затем печатается строка, на которую указывает этот элемент (рис.2.4-1).


Рис.2.4-1

a[(++p)->i].s Вначале увеличивается p, затем печатается элемент s записи, являющейся элементом массива a с индексом p->i (рис.2.4-2).


Рис.2.4-2 a[--(p->s1p->i)].s Сначала уменьшается элемент i записи, на которую указывает s1p из записи, на которую указывает p. Затем результат используется как индекс для a (рис.2.4-3).


Рис.2.4-3



Содержание раздела