Справочник языка Cи



         

Объявление данных


Если непосредственно за ключевым словом near, far или huge следует идентификатор, то это значит, что соответствующий элемент данных будет размещен в стандартном сегменте (для near) или может быть размещен в другом сегменте данных (для far или huge).

Например, объявление

char far х;

сообщает, что адрес объекта х имеет тип far.

Если же непосредственно за ключевым словом near, far или huge следует признак указателя (звездочка), то это значит, что соответствующий указатель будет хранить адрес типа near, типа far или типа huge, соответственно. Например, объявление

char far *р;

сообщает, что указатель р имеет тип far, т. е. может указывать на объект, расположенный в любом сегменте данных (при этом тип адреса этого объекта должен быть far). Объявление

char * far р;

объявляет р как указатель на char, причем сам указатель р может находиться в любом сегменте, и его адрес имеет тип far. Объявление

char far * far р;

сообщает, что указатель р может указывать на объекты с адресом типа far. Адрес самого указателя р также имеет тип far.

Примеры:

char а[3000];         /* пример 1: малая модель */

char far b[30000];    /* пример 2: малая модель */

char a[3000];         /*

пример 3: большая модель */

char near b[3000];    /*

пример 4: большая модель */

char huge a[70000];   /*

пример 5: малая модель */

char huge *pa;        /* пример 6: малая модель */

char *pa;             /*

пример 7: малая модель */

char far *pb;         /*

пример 8: малая модель */

char far **pa;        /* пример 9: малая модель */

char far **pa;        /*

пример 10: большая модель */

char far *near *pb;   /*

пример 11: любая модель */

char far *far *pb;    /* пример 12: любая модель */

В примере 1 массиву а выделяется память в стандартном сегменте данных; массиву b во втором примере память может быть выделена в любом из сегментов данных программы. Поскольку оба объявления сделаны в малой модели, то, вероятно, массив а содержит часто используемые данные, которые для ускорения доступа должны располагаться в стандартном сегменте, а массив b содержит редко используемые данные, которые могут выйти за пределы 64-Кбайтного




Содержание  Назад  Вперед