C++ первый курс Alex Жив / C++ Перший курс / old / Lections 1 trim / Лекція №9 СТРУКТУРИ
.doc
Синтаксис: 1
Ініціалізація: 1
Доступ до елементів структури 2
Розмір структури 2
Структура – аргумент функції. 2
Масиви структур. 2
Структура в структурі 3
Вказівник на структуру 3
Передача у функцію об’єкту структури за посиланням 3
Об'єднання 4
Масиви – набір однотипних даних. Структури – набір різнотипних або однотипних даних.
Синтаксис:
Struct ім'я_структури
{
тип_змінна ім'я_змінна1;
тип_змінна ім'я_змінна2;
. . .
тип_змінна ім'я_зміннаn;
};
Опис структури:
<ім'я_структури>< ім'я_змінної>;
Приклад:
Struct PERSON
{
char name[20];
int vozvrast;
float rost;
};
PERSON student1, student2;
Або
Struct PERSON
{
char name[20];
int vozvrast;
float rost;
} student1, student2;
Ініціалізація:
Struct PERSON
{
char name[20];
int vozvrast;
float rost;
} student1={«Петров», 20, 1.75};
Або PERSON student1={«Петров», 20, 1.75};
Доступ до елементів структури
Доступ до елементів здійснюється з пом. операції .
student2.vozvrast = 22;
student2.rost=1.68;
student2.name= «Женя»; // не правильно
strcpy(student2.name,«Женя»);
Розмір структури
int raz=sizeof(studern2); // I=32
Оголосити структуру можна й усередині головної функції.
Структура – аргумент функції.
Struct PERSON
{
char name[20];
int vozvrast;
float rost;
};
Void Outperson(PERSON p)
{
cout << “Ім'я “ << p.name;
cout << “Возвраст “ << p.vozvrast;
cout << “Ріст “<<p.rost;
}
main()
{
PERSON friend;
friend.vozvrast = 22;
friend.rost=1.68;
strcpy(friend.name,«Женя»);
Outperson(friend);
}
Масиви структур.
Синтаксис:
Ім'я_структури ім'я_масиву[кіл_елементів];
PERSON K213[20];
Доступ
K213[0].vozvrast = 19;
K213[0].rost=1.68;
strcpy(K213[0].name,«Женя»);
Структура в структурі
Struct Dot
{
float x;
float y;
};
Struct Rectan
{
Dot A;
Dot B;
char Color[10];
};
Rectan DEFK
strcpy(Rectan.Color,”red”);
DEFK.A.x=10;
DEFK.A.y=20;
DEFK.B.x=100;
DEFK.B.y=200;
Вказівник на структуру
Доступ до елементів здійснюється з пом. операції ->
PERSON *Anna;
Anna = new PERSON;
Anna->rost=1.68;
Anna->vozvras=21;
Strcpy(Anna->name,”Аня”);
PERSON *Anna;
PERSON pers;
Anna = &pers;
Передача у функцію об’єкту структури за посиланням
За посиланням
Void Inpurper1(PERSON &A)
{
cin >> A.rost;
cin >> A.vozvrast;
}
Void Inpurper1(PERSON *A)
{
cin >> A->rost;
cin >> A->vozvrast;
}
main()
{
PERSON XXX1,XXX2;
Inpurper1(XXX1);
Inpurper1(&XXX2);
}
Об'єднання
Об'єднання служать для розміщення в одній і тій же області пам'яті по тому самому адресі даних різних типів.
Union ім'я_объед
{
тип_змінна ім'я_змінна1;
тип_змінна ім'я_змінна2;
. . .
тип_змінна ім'я_зміннаn;
}
union D
{
int x;
float y;
char s[10];
}
Розмір по максимальному.
Оголошення змінної
D data;
Доступ
Data.x=10;
Cout << Data.x;
Strcpy(D.s,”Hello”);
Cout << Data.s;
Програміст сам повинен стежити за типом даних у цей момент.
Data.x=10;
Data.x++;
Cout << Data.x;
Strcpy(D.s,”Hello”);
Data.x++; // ПОМИЛКА
Cout << Data.x;