Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции по проге / 14_Типы данных, определяемые пользователем

.pdf
Скачиваний:
32
Добавлен:
14.03.2016
Размер:
224.69 Кб
Скачать

Объявление переменной-структуры

Указатель на структуру:

[struct] <имя структуры> *<имя переменной>;

указатель на структуру

— тип данных

Ключевое слово struct можно опускать, если компиляция производится в режиме Си++ (файл имеет расширение .cpp)

11

Задание

Объявить массив students из 25 студентов и указатель topStudent для ссылки на студента, имеющего наибольший средний рейтинг

12

Пример объявления переменных типа "структура"

struct student students[25]; struct student *topStudent;

или

student students[25]; student *topStudent;

0

1

24

 

FIO

FIO

...

FIO

students

course

course

course

 

avg_rating

avg_rating

 

avg_rating

13

topStudent

Совместное объявление типа данных "структура" и переменной этого типа

struct [<имя структуры>]

{

<тип поля 1> <имя поля 1>;

...

<тип поля N> <имя поля N>;

} <имя переменной>;

В этом случае <имя структуры> можно не указывать — такое объявление называется анонимным

14

Пример анонимного объявления структур

// Массив студентов и указатель на студента struct

{

 

 

 

char

FIO[41];

// ФИО

int

course;

//

номер курса

float

avg_rating;

//

средний рейтинг

}

 

 

 

students[25], *topStudents;

15

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

Одна структура может содержать внутри себя объявление другой, совмещенное с объявлением поля этого типа

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

16

Задание

Добавьте в описанную ранее структуру student массив предметов subjects из двух элементов

Каждый элемент массива subjects должен содержать:

название предмета — name — строка не более 35 значащих символов

оценку по предмету — grade — целое число

Новую структуру назовите student_ext

17

Пример объявления вложенных структур

// Расширенная версия структуры "студент" struct student_ext

{

char FIO[41]; int course; float avg_rating;

// Предметы и оценки по ним struct

{

char name[36]; // название предмета int grade; // оценка

} subjects[2];

18 };

Инициализация структур

 

 

struct <имя структуры> <имя переменной> =

 

 

 

 

 

 

{

 

 

<значение поля 1>,

 

 

<значение поля 2>,

 

 

...

 

 

<значение поля N>

 

 

};

 

 

При объявлении переменной-структуры возможна

 

 

их инициализация; при этом значения элементов

 

 

структуры заключаются в фигурные скобки, как и

19

элементы массива

Задание

Объявить переменную Iam, используя структуру student, и инициализировать ее значением своей фамилии и курса, а также своим приблизительным средним рейтингом

20