Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Создание структурных переменных



Как уже отмечалось, само описание структуры не приводит к выделению под нее места в памяти. Теперь необходимо создать нужное количество переменных с приведенной структурой и сделать это можно двумя способами.

Способ 1. В любом месте программы для декларации структурных переменных, массивов, функций и т.д. используется объявленный в шаблоне структурный тип, например:

struct Stud_type student; - структурная переменная;

Stud_type Stud[100]; - массив структур

Stud_type *p_stud; - указатель на структуру

Stud_type* Fun(Stud_type); - прототип функции с параметром структурного типа, возвращающей указатель на объект структурного типа.

Способ 2. В шаблоне структуры между закрывающейся фигурной скобкой и символом «;» указывают через запятые идентификаторы структурных данных.

Для нашего примера можно записать:

struct Stud_type

{

char Number[10], Fio[40];

double S_b;

} student, Stud[100], *p_stud;

Если дальше в программе не понадобится вводить новые данные объявленного структурного типа, Stud_type можно не указывать.

При декларации структурных переменных возможна их одновременная инициализация, например:

struct Stud_type

{

char Number[10], Fio[40];

double S_b;

} student = {“123456”, “Иванов И.И.”, 6.53 };

или

Stud_Type stud1 = {“123456”, “Иванов И.И.” };

Если список инициализации будет короче, то оставшиеся поля структурной переменной будут заполнены нулями.

Элементом структуры могут быть битовые поля (строки битов):

struct fields

{

unsigned int flag:1;

unsigned int mask:10;

unsigned int code:5;

};

после символа «:» указывается длина битового поля, не превышающая разрядность поля типа int.

Битовые поля размещаются последовательно в поле типа int, при нехватке места для очередного битового поля - переход на следующее поле типа int. Возможно объявление безымянных битовых полей, а длина поля 0 означает необходимость перехода на очередное поле int:

struct areas

{

unsigned f1:1;

:2; /* Безымянное поле длиной 2 бита */

unsigned f2:5;

:0 /* Признак перехода на следующее поле int */

unsigned f3:5;

float data; /* Структура может содержать */

char buffs[100]; /* элементы любых типов данных */

};

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

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

Примеры групповых операций:

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

- запись и чтение данных, хранящихся на внешних носителях как физические и/или логические записи с известной структурой.





Дата публикования: 2014-11-28; Прочитано: 293 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...