Операции над переменными структурного типа

ГЛАВА 11. СТРУКТУРЫ

Определение структуры

Операции над переменными структурного типа

Вложенные структуры

Массивы в структурахМассив структур

Структуры и указатели

· Указатели в структуре

· Указатели на структуру

Динамический массив структур

Ссылка на структуру

Структуры и функции

В С++ существуют специальные средства, позволяющие программистам создавать свои собственные типы данных, такие как структуры, классы и др.

Определение структуры

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

Для определения структуры используется ключевое слово struct, за которым следует идентификатор, являющийся именем типа структуры, и список полей или членов структуры, заключённых в фигурные скобки. Каждое поле структуры, как и структура в целом, заканчивается точкой с запятой. Например:

struct Date { // Date – название нового типа пользователя

char name[10]; // поле name

int year; // поле year

int month; // поле month

};

После того как определён структурный тип, пользоваться этим типом нельзя до того момента, пока не объявлена переменная структурного типа. Это можно сделать двумя способами:

Date st1; // переменная st1 типа Date

или

struct Date {

char name[10];

int year;

int month;

} st1;

При объявлении нескольких структурных переменных для одного структурного типа их следует разделять запятыми:

Date st1, st2;

В момент создания структурной переменной компилятор резервирует под неё место в памяти компьютера, В частности, для переменных st1, st2 резервируется память по 18 байтов для каждой.

Доступ к полям структуры осуществляется с помощью операции точка (.). При этом сначала записывается имя структурной переменной, а затем через операцию точку (.) имя поля структуры, например:

st1.name, st1.year.

Присваивать значения полям структуры можно одним из трёх способов:

st1.year = 1999; // использовать оператор присваивания

cin>>st1.name; // ввести значения полей с клавиатуры

Date st1 = {"Иванов", 1999, 11}; // инициализация при объявлении

Операции над переменными структурного типа

Чаще всего над переменными структурного типа выполняют операцию присваивания. Присваивание структур возможно, только если они имеют один и тот же тип:

Date st1, st2, st3;

st2 = st1; // все поля структуры st1 побитово копируются в st2

Недопустимо присваивание структур разных типов, даже в том случае, когда они идентичны по количеству, типу и размеру их полей.

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

Date st1, st2;

if(st1 == st2) оператор; // Нельзя: ошибка компиляции!

Единственный доступный способ достоверно сравнить структурные переменные – это их поэлементное сравнение:

if(st1.day == st2.day) && (st1.month == st2. month) оператор;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: