Записи и объединения. Декларация и инициализация записей


Декларация и инициализация записей

Описание структурных переменных выполняется в два шага:

· Задание шаблона.

· Собственно описание переменных.

В пределах своей области известности имя шаблона должно быть уникальным. Допускается определение только одного шаблона в своей области известности без имени. Имена шаблонов сравниваются компилятором только между собой. Имя шаблона может совпадать с метками или именами переменных и это не является ошибкой.

Синтаксис шаблона:

struct[имя_шаблона]{тип1 имя_поля1;

тип2 имя_поля2;

…………….

типN имя_поляN;};

имя_поля может быть задано списком

Пример

struct book{char author[20];

char title[50];

int year;

float price;};

Память не резервируется. Информация о типе попадает в таблицы компилятора.

Шаблон, описанный в пределах блока {} не видим извне, а только внутри блока. Как только задан шаблон, то может описываться структурная переменная.

Пример

Описание структурной переменной может быть совмещено с заданием шаблона

struct book{ char author[20];

char title[50];

int year;float price; }; first_book, child_book

Здесь first_book, child_book структурные переменные

struct book third_book;

 

Для инициализации записей используется список инициализации, в котором указываются значения для любого поля. Пропуск значения указывается запятой или отсутствием элементов хвоста списка инициализации. Для вложенных структур применяются подсписки вида {…} внутри списков {…}.

Пример

struct book

first_book = {“Чень Ч., Ли Р.”,

“Математическая логика …”,

1983, 2.20},

child_book = {“”, “Сказания и мифы”, 1984, };

 

Некоторые поля структурной переменной в свою очередь могут быть структурными переменными и тогда в списке инициализации должны появиться для этих полей вложенные скобки: {…, {…}, …}.

Для упрощения описания структурных переменных можно использовать оператор typedef (описание собственного типа). На самом деле вводится только имя типа.

Пример

typedef struct UDC{char class, subclass;

int number;} T_UDC;

typedef struct { char author[20];

char title[50];

int year; float price} T_BOOKS;

В данном примере UDC имя структуры, во втором примере имя шаблона не указано. T_UDC и T_BOOKS имена новых структурных типов. Определим новый тип с двумя вложенными структурными полями:

typedef struct {T_UDC idinf;

T_BOOKS maininf;} MY_BOOKS;

Объявление переменных в программе можно сделать следующим образом:

MY_BOOKS first_book, second_book;

 

Ограничение: Структура не может вкладываться сама в себя

 

Контрпример. Ошибка!

struct book { struct book my_own;

char author[20];

char title[50];

int year; float price; };



Дата добавления: 2016-05-26; просмотров: 1287;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.