
C++ первый курс Alex Жив / C++ Перший курс / lections / Лекція №5b СТРУКТУРИ
.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 p[20];
Доступ
p[0].vozvrast = 19;
p[0].rost=1.68;
strcpy(p[0].name,«Женя»);
Структура в структурі
struct Dot
{
float x;
float y;
};
struct Rectan
{
Dot a;
Dot b;
char color[10];
};
Rectan r
strcpy(Rectan.color,”red”);
r.a.x=10;
r.a.y=20;
r.b.x=100;
r.b.y=200;
Вказівник на структуру
Доступ до елементів здійснюється з пом. операції ->
Person *p;
p = new Person;
p->rost=1.68;
p->vozvras=21;
strcpy(p->name,”Аня”);
або
Person *p;
Person pers;
p = &pers;
Передача у функцію об’єкту структури за посиланням
За посиланням
void Inpurper1(Person &p)
{
cin >> p.rost;
cin >> p.vozvrast;
}
void Inpurper1(Person *p)
{
cin >> p->rost;
cin >> p->vozvrast;
}
main()
{
Person p1,p2;
Inpurper1(p1);
Inpurper1(&p2);
}
Об'єднання
Об'єднання служать для розміщення в одній і тій же області пам'яті по тому самому адресі даних різних типів.
union ім'я_объед
{
тип_змінна ім'я_змінна1;
тип_змінна ім'я_змінна2;
. . .
тип_змінна ім'я_зміннаn;
}
union D
{
int x;
float y;
char s[10];
}
Розмір по максимальному.
Оголошення змінної
D data;
Доступ
data.x=10;
cout << data.x;
strcpy(data.s,”Hello”);
cout << data.s;
Програміст сам повинен стежити за типом даних у цей момент.
data.x=10;
data.x++;
cout << data.x;
strcpy(data.s,”Hello”);
sata.x++; // ПОМИЛКА
cout << data.x;