Книга: Язык Си - руководство для начинающих

ОПРЕДЕЛЕНИЕ СТРУКТУРНЫХ ПЕРЕМЕННЫХ

     Слово "структура" используется двояко. Во-первых, в смысле "структурного шаблона", о котором мы только что рассказали. Шаблон является схемой без содержания; он сообщает компилятору, как делать что-либо, но нс вызывает никаких действий в программе. Следующий шаг заключается в создании "структурной переменной"; это и есть второй смысл слона структура. Строка нашей программы, создающая структурную переменную, выглядит так:

struct book libry;

На основании этого оператора компилятор создаст переменную libry. Согласно плану, установленному шаблоном book, он выделяет память для символьного массива, состоящего из MAXTIT-элементов, для символьного массива из MAXAUT-элементов и для переменной типа float. Эта память объединяется под именем libry. (В следующем разделе мы расскажем, как ее "разъединить", если понадобится.)


  

РИС. 14.1. Распределение памяти для структуры.

     В этом описании struct book играет ту же роль, что и int или float в своих описаниях. Например, мы могли бы описать две переменные типа struct book или даже указатель на этот тип структуры:

struct book doyle panshin, *ptbook;

     Каждая структурная переменная, doyle и panshin, имела бы части title, author и value. Указатель ptbook мог бы ссылаться на doyle, panshin или любую другую book-структуру. Для компьютера оператор нашей программы

struct book libry;

является сокращенной записью

struct book libry;

является сокращенной записью

struct book {

char title [MAXTIT];

char author [MAXAUT];

float value;

} libry; /* присоединяет имя переменной к шаблону */

Другими словами, процесс определения структурного шаблона и процесс определения структурной переменной можно объединить в один этап. Объединение шаблона и определений переменных является именно тем случаем, когда не нужно использовать имя типа структуры:

struct { /* без имени типа структуры */

char title [MAXTIT];

char author [MAXAUT];

float value;

}   libry;

Форма с именем типа структуры удобнее, если вы используете структурный шаблон более одного раза.

     Есть один аспект определения структурной переменной, который не нашел отражения в нашем примере - инициализация. Теперь мы хотим заняться этим вопросом.

Оглавление книги


Генерация: 1.465. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз