The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

A.6 Структуры

A.6 Структуры

Предыдущая  Содержание  Следующая V*D*V

Структуры собирают компоненты разных типов. Структуры, компоненты и переменные могут иметь одинаковые имена:

 

struct u { int u; double v; } u;

struct v { double u; int v; } * vp;

 

Компоненты структур выбираются с помощью точки для переменных структуры и стрелки для указателей на структуры:

 

u.u = vp -> v;

 

Указатель на структуру может быть продекларирован даже если сама структура ещё не была представлена. Структура может быть объявлена без декларирования объектов:

 

struct w * wp;

struct w { ... };

 

Структура может содержать структуру:

 

struct a { int x; };

struct b { ... struct a y; ... } b;

 

Для доступа требуется полная последовательность имён компонентов:

 

b.y.x = 10;

 

Первый компонент структуры располагается сразу в начале структуры; таким образом структуры могут быть удлинены или укорочены:

 

struct a { int x; };

struct c { struct a a; ... } c, * cp = & c;

struct a * ap = & c.a;

 

  assert((void *) ap == (void *) cp);

 

ANSI-C не допускает ни неявные преобразования указателей к различным структурам, ни прямой доступ к компонентам внутренней структуры:

 

ap = cp;                         ошибка

c.x, cp -> x                     ошибка

cp -> a.x                        ок, полностью определено

((struct a *) cp) -> x           ок, явное преобразование

 

Предыдущая  Содержание  Следующая