Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Как уже отмечалось, само описание структуры не приводит к выделению под нее места в памяти. Теперь необходимо создать нужное количество переменных с приведенной структурой и сделать это можно двумя способами.
Способ 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!