2.3.3 Производные типы.

   


Назад  |  Вперёд

Исходя из основных (и определенных пользователем) типов, можно с помощью следующих операций описания:

           *     указатель
           &     ссылка
           []    массив
           ()    функция

а также с помощью определения структур, задать другие, производные типы. Например:

           int* a;
           float v[10];
           char* p[20];   // массив из 20 символьных указателей
           void f(int);
           struct str { short length; char* p; };

Правила построения типов с помощью этих операций подробно объяснены в $$R.8. Ключевая идея состоит в том, что описание объекта производного типа должно отражать его использование, например:

           int v[10];     // описание вектора
           i = v[3];      // использование элемента вектора

           int* p;        // описание указателя
           i = *p;        // использование указуемого объекта

Обозначения, используемые для производных типов, достаточно трудны для понимания лишь потому, что операции * и & являются префиксными, а [] и () - постфиксными. Поэтому в задании типов, если приоритеты операций не отвечают цели, надо ставить скобки. Например, приоритет операции [] выше, чем у *, и мы имеем:

           int* v[10];        // массив указателей
           int (*p)[10];      // указатель массива

Большинство людей просто запоминает, как выглядят наиболее часто употребляемые типы. Можно описать сразу несколько имен в одном описании. Тогда оно содержит вместо одного имени список отделяемых друг от друга запятыми имен. Например, можно так описать две переменные целого типа:

           int x, y;    // int x; int y;

Когда мы описываем производные типы, не надо забывать, что операции описаний применяются только к данному имени (а вовсе не ко всем остальным именам того же описания). Например:

           int* p, y;        // int* p; int y; НО НЕ int* y;
           int x, *p;        // int x; int* p;
           int v[10], *p;    // int v[10]; int* p;

Но такие описания запутывают программу, и, возможно, их следует избегать.


Назад  |  Вперёд


OtDiatlovaOU
К началу книги

Оформление и дизайн книги OtDiatlovaOU.
Вся книга, архив.