Определение шаблона структуры и структурной переменной 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Определение шаблона структуры и структурной переменной



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

Определение структуры ( структурного типа, шаблона структуры) задает внутреннюю организацию структурных переменных после их определения и никак не связано с резервированием памяти компилятором, не создает никаких переменных. Структурный тип только задает правила формирования структурной переменной, используемые компилятором при последующем определении структурной переменной для выделения ей места в памяти и организации доступа к ее полям. Структурный тип имеет уникальное имя в пределах области определения. Имя структурного типа используется при определении структурных переменных аналогично встроенным типам.

 

 


struct date{                int day;                int month;                int year;                char mon_name[10];  }; имя (тег) структуры     элементы структуры (поля, члены-данные)
ключевое слово определение структуры (структурного типа, шаблона структуры)

 

Синтаксис определения структуры (структурного типа, шаблона структуры):

struct pattern_name { type1 field_name1;
                                 type2 field_name2;
                                      …..
                                 typeN field_nameN;

 };

или, в случае полей одного типа:

struct pattern_name { type1 field_name1, field_name2;
                                      …..
                                 typeK field_nameN;

 };

где:

  • pattern_name – имя шаблона, удовлетворяющее правилам задания идентификаторов языка;
  • type1, type2, … typeN – любые типы;
  • field_name1, field_name2, …,  field_nameN – имена полей, удовлетворяющие правилам задания идентификаторов языка.

Элементом структуры в С++ может быть и функция.

 

Примеры определений структурного типа:

//1

struct PointRecType // структурный тип «точка»  

      { int x, y;

};  

 

!!! Для определения точки можно использовать предопределенную в заголовочном файле windows.h структуру POINT, соответствующую структуре PointRecType.

 

//2      

struct ColorPointRecType // структурный тип «цветная точка»

       { int x, y;

          unsigned color;

};

//3

struct   Book     // структурный тип «книга»

                   {

                    char name [20];

                    char title[44];

                    int year;

                    float price;

};

//4

struct Auto // структурный тип «автомобиль»

{

char fio[40]; //ФИО владельца

char adres[60]; //адрес владельца

int nomer;     //номер авто         

char marka[20]; //марка авто

};

//5

struct Student // структурный тип «студент»

{

unsigned short gruppa;

char fio[20];

unsigned short ocenki[KOL_OC]; //массив оценок на экзамене

};

//6

struct Rectangle // структурный тип «прямоугольник»

{

int left;       //пара координат верхней левой точки

int top;

int right; //пара координат нижней правой точки

int bottom;

};

!!! Для определения прямоугольных областей можно использовать предопределенную в заголовочном файле windows.h структуру RECT, соответствующую приведенной структуре Rectangle:

//7

struct Box // структурный тип «ящик»

{

double length;  //длина

double width;   //ширина

double heigth;       //высота

};

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

· определение структурного типа (шаблона структуры, структуры);

· собственно определение структурной переменной

 

Определение структурных переменных s1 и s2 для приведенной выше структуры Student выглядит следующим образом:

Student     s 1, s2;     //ключевое слово struct опускается

 

Синтаксис С++ разрешает совмещать определение структурного типа и определение структурных переменных. Например:

struct Book { char name[20];                             определение структурного типа

                    char title[44];

                    int year;

                    float price;                                    определение структурных переменных

} first_book, child_book, dog_book [4], *ptr_book;

 

Определение структурного типа может быть анонимным. В этом случае сразу следует определять структурные переменные. Например:

 

struct {                                                   // анонимный структурный тип

int pole1;

double pole2;

char *pole3;  

     } a, b, * pb=&b, * pc, & refa=a, & refb(b); //    определение структурных переменных

 

Как мы видим, значением указателя на структуру может быть адрес структуры того же типа, т.е. адрес байта, начиная с которого структура размещается в памяти. Структурный тип задает ее размеры и тем самым определяет, на какую величину (на сколько байтов) изменится значение указателя на структуру, если к нему прибавить (или вычесть) 1.

Структурный тип может быть операндом операции new:

ptr_book = new Book; //выделяется память для структуры типа Book и
                                                   //возвращается указатель на выделенную память.

Для структур могут быть определены и ссылки. Выше в примере показаны разные способы инициализации ссылок refa и refb.



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 31; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.19.31.73 (0.015 с.)