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

C++ первый курс Alex Жив / C++ Перший курс / lections / Лекція №5b СТРУКТУРИ

.doc
Скачиваний:
25
Добавлен:
23.03.2015
Размер:
57.86 Кб
Скачать

4

Синтаксис: 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;