Лекции по проге / 14_Типы данных, определяемые пользователем
.pdf
Объявление переменной-структуры
● Указатель на структуру:
[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
