adfun.ru
 
BIGLIB
  большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно
 
АСТРОЛОГИЯ
  книги по астрологии
 
КРИМИНАЛ
  книги про криминал
 
ДЕТЕКТИВЫ
  детективы известных
   писателей
 
ФАНТАСТИКА
  фентези, фантастика,   фантастические повести
 
ПРИКЛЮЧЕНИЯ
  книги про приключения,   путешествия
 
ПОЛИТИКА
  книги про политиков,   репрессии
 
ПСИХОЛОГИЯ
  разнообразная литература   по психологии
 
КЛАССИКА
  классическая литература
 
КОМПЬЮТЕРНАЯ
  ЛИТЕРАТУРА
  про компютерное железо,   документация, языки   программирования
 
РЕЛИГИЯ, АТЕИЗМ
  книги про религию
 
ФИЛОСОФИЯ
  книги, которые заставляют   задуматься над   окружающим тебя миром.
 
ЭНЦИКЛОПЕДИИ
  самые интересные   энциклопедии на
   разные темы
 
МЕДИЦИНА
  медицинские книги,   методички,
   народные лечебники
 
КУЛИНАРИЯ
  рецепты тортов,   консервирование,
  все о спиртных
  напитках.
 
СТИХИ
  стихи популярных и не   очень авторов
 
ТВОРЧЕСТВО
  народное творчество,   стихи, песни и т.д.
 
ЮМОР
  анекдоты, приколы,   смешные истории
 
ЛЮБОВНЫЙ РОМАН
  мир высоких чувств и   любовных грез
 
ЭРОТИКА
  эротические рассказы,   книги о технике секса,   кама-сутра и др.




adfun.ru
Rambler's Top100 Rambler's Top100
    НА ГЛАВНУЮ
    РЕФЕРАТЫ
    ТОСТЫ
    ТЕСТЫ
    АВТО
    ДЛЯ СТУДЕНТА
    КНИГИ
    КОНТАКТ
 
Turbo C++ Version 1.0 Programmer's Guide
Автор ""
Размер 211728 Байт
Страница 22 из 30
СКАЧАТЬ КНИГУ ЦЕЛИКОМ

слова struct. Например,

     struct mystruct (* ... *); // mystruct - это тег струк-
туры
    ...
    struct mystruct s, *ps, arrs[10];
     /* s имеет тип структуры mystruct;  ps это указатель на
тип struct mystruct */
       Структуры без тегов и определения типов (typedef)

     Структуры без компонентов и компоненты  объединений при
инициализации игнорируются.

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

    struct (* ...*) s, *ps, arrs[10];  //структура без тега

     При объявлении структуры,  как с тегом, так и без него,
можно создать typedef:

    typedef struct mystruct (* ... *) MYSTRUCT;
    MYSTRUCT s, *ps, arrs[10];     // то же, что и
     // struct mystruct s и т.д.
     typedef struct (* ...  *) YRSTRUCT;  // тег отсутствует
YRSTRUCT y, *yp, arry[20];

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

       Объявления компонентов структуры

     Список-объявления-компонентов вфигурных скобках  объяв-
ляет типы и имена компонентов структуры при помощи синтакси-
са  декларатора,  показанного  в  таблице  1.11  на   стр.36
оригинала.

      Компоненты структуры могут быть любого типа, за двумя
 исключениями

     1. Тип компонента не может быть тот же, что и объявляе-
мая в текущий момент структура:

     struct mystruct (* mystruct s *) s1, s2;// недопустимо

     Компонент структуры может являться указателем на объяв-

                           - 64 -
ляемую структуру, как в следующем примере:

     struct mystruct (* mystruct *ps *) s1, s2; // так можно

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

      В С++ ключевое слово struct может быть опущено.

     2. Кроме С++,  компонент структуры нигде не может иметь
тип "функция,  возвращающая ...", но тип "указатель на функ-
цию,  возвращающую ..." допустим.  В С++ struct может  иметь
компоненты-функции.

Структуры и функции

     Функция может иметь возвращаемое значение типа структу-
ры или указателя структуры.

     mystruct func1(void);  // func1() возвращает  структуру
mystruct
    *func29void); // func2() возвращает указатель структуры

     Структура можетбыть передана функции в  качестве  аргу-
мента, следующим образом:

    void func1 (mystruct s);   // непосредственно
    void func2 (mystruct *sptr);   // через указатель
    void func3 (mystruct &sref);   // по ссылке (только С++)
 Доступ к компоненту структуры

     Доступ к компонентам структур и объединений выполняется
операторами выбора . и ->. Предположим, что объект имеет тип
структуры S,  а sptr это указатель на S.  Тогда,  если m это
идентификатор типа M,  объявленного в S,  то выражения s.m и
sptr->m имеют тип M и  представляют  объект  m  -  компонент
структуры s. Выражение s->sptr является удобным синонимом (*
sptr).m.

     Операция .  называется  прямым  селектором   компонента
структуры;  операция -> называется косвенным селектором ком-
понента (или указателем) структуры; например,

    struct mystruct (*





int i; char str[21]; double d; *) s, *sptr=&s; ... s.i = 3; // присвоению члему i структуры mystruct s sptr->d = 1.23; // присвоение компоненту d структуры mystruct s Выражение s.m является именуемым значением (lvalue), если s это не именуемое значение и s не имеет тип массива. Выражение sptr->m является именуемым выражением, если m не имеет тип массива. Если структура B содержит поле, тип которого есть структура A, то доступ к компонентам A выполняется через два одновременно задаваемых селектора компонента структуры: - 65 - struct A (* int j; double x; *) struct B (* int i; struct A a; double d; *) s, *sptr; ... s.i = 3; // присвоение компоненту i структуры B s.a.j = 2; // присвоение компоненту j структуры A sptr->d = 1.23; // присвоение компоненту d структуры B (sptr->).x = 3.14 // присвоение компоненту x структуры A Каждое объявление структуры вводит уникальный тип структуры, поэтому в struct A (* int i,j; double d; *) a, a1; struct B (* int i,j; double d; *) b; объекты a и a1 оба имеют тип struct A, но объекты a и b имеют различные типы структуры. Структурам может выполняться присваивание только в том случае, если и исходная структура, и структура назначения имеют один и тот же тип: a = a1;// так можно; тип один и тот же, поэтому может быть // выполнено покомпонентное присвоение структур a = b;// так нельзя; разные компоненты a.1 = b.1; a.j = b.j; a.d = b.d; // однако присвоение можно // выполнять на уровне компонентов структуры Выравнивание по границе слова Память распределяется структуре покомпонентно, сле- ва-направо, от младшего к старшему адресу памяти. В следую- щем примере struct mystruct (* int i; char str[2]; double d; *) s; объект s занимает достаточное количество памяти для размещения 2- байтового целочисленного значения, 21-байтовой строки и 8-байтового значения типа double. Формат данного объекта в памяти определяется опцией Turbo C++ выравнивания по границе слова. Когда эта опция выключена (по умолчанию), s будет занимать 31 байт непрерывно. Если же включить вырав- нивание по границе слова опцией -a компилятора (или в диало- говом поле Options \! Compiler \! Code Generation), то Turbo C++ заполняет структуры байтами таким образом, что структура была выравнена по следующим правилам: - 66 - 1. Структура должна начинаться по границе слова (четный адрес). 2. Любой не-символьный элемент будет иметь четное сме- щение в байтах относительно начала структуры. 3. В конец структуры при необходимости добавляется ко- нечный байт, таким образом, чтобы вся структура в целом за- нимала четное количество байтов.


Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [22] 23 24 25 26 27 28 29 30


adfun.ru









Форум раскрутка сайта и интернет-реклама
реклама - рекламное агентство -
Интернет PR агентство чат и форум
волчат знакомства - сайт знакомств
бесплатные компьютерные игры
фото знакомства
новые стеклопакеты -
качественное остекление балконов
портал - пластиковые окна -
закажите окна пвх в Москве

частная стоматология в Москве:
надежная стоматологическая клиника
протезирование зубов и
отбеливание зубов в стоматологии
Музыка - скачать mp3 музыка
каталог партнерские программы
ручной бесплатный обмен ссылками цифровые камеры цифровые фотоаппараты -
цифровые видеокамеры

театры - заказ билетов в театр -
магазин - продажа компьютеров
в Москве форум Испания - жилье -
недвижимость в испании

турфирма - испания туры
Переводы - бюро переводов
Законы - закон о товарных знаках,
Грузовые перевозки. АсМАП. Дальнобой закон о рекламе
Интернет казино
реклама на форуме и контекстная реклама
на Яндексе Баннерная сеть и
интернет каталог сайтов Holiday.Ru
Форумы политика, лучшие анекдоты
знакомства.