Структура
В реальному житті дуже багато інформації яка є пов’язана між собою. Також велику кількість речей можна описати приблизно однаково. Наприклад, стіл ми можемо описати враховуючи такі його характеристики: висота, ширина, довжина, колір, матеріал з якого виготовлений. Цей опис можна застосувати для столу і багатьох інших речей. Або на приклад у вас є однокласники/одногрупники/колеги. Їх також можна описати використовуючи однакову інформацію: прізвище, ріст, вага, дата народження.
Уявіть програму яка буде описувати подібну інформацію. В таких ситуаціях доведеться створювати величезну кількість змінних, що принесе чи мало незручностей.
В таких ситуаціях на допомогу приходить структура Структура це своєрідний тип даних який дозволяє поєднувати в собі інші змінні. Структуру дуже зручно використовувати для опису подібних Вона дозволяє не створювати однакові змінні для кожного а використовувати вже готовий набір змінних, що є розміщеними в структурі.
Створювати структуру краще за межами головної функції (тобто, не в середині але можна створити і в середині головної функції.
Створити структуру можна так: у фігурних дужках створюємо всі змінні які може використовувати структура; в кінці після закриваючої фігурної дужки ставимо крапку з комою
Наприклад, структура яка описуватиме кота структури буде і буде мати в собі дві змінні: оскільки це буде слово, то тип змінної буде стрічка та оскільки це буде ціле число, то будемо мати відповідний тип Виглядатиме так:
struct Cat
{
std::string name;
int age;
};
Для того щоб використати структуру вам варто створити змінну і в якості типу змінної вказати ім’я необхідної структури:
ім’я_структури ім’я_змінної
Наприклад, створимо змінну з іменем і в якості її типу візьмемо нашу структуру
Cat kit;
Тепер, якщо вам необхідно використати/записати якусь інформацію в середину структури (тобто, у змінні які знаходяться в структурі), то необхідно до них звернутися. Це зробити доволі просто. Після «імені змінної типу структура» потрібно поставити крапку та обрати необхідну змінну зі структури.
Наприклад, ми можемо вказати, що нашого кота звати і йому роки. Для цього після змінної потрібно поставити крапку та звернутися до необхідних змінних.
kit.name = "Myrko";
kit.age = 2;
Повноцінна програма виглядатиме так:
#include <iostream>
//Створюємо структуру з іменем Cat
struct Cat
{
//змінні структури
std::string name;
int age;
};
int main()
{
//сторюємо змінну типу структура Cat. ім'я змінної kit
Cat kit;
//ми можемо отримати інформацію від користувача
std::cout << "input name cat" << std::endl;
std::cin >> kit.name;
std::cout << "input age cat" << std::endl;
std::cin >> kit.age;
//або записати її самостійно
//kit.name = "Myrko";
//kit.age = 2;
//використовуємо інформацію зі структури
std::cout << "name: " << kit.name << "\nage: " << kit.age;
return 0;
}
Ви можете створити декілька змінних з типом структура.
Якщо ваші змінні типу структура часто використовують одні і ті ж значення, то ви можете вказати значення за замовчуванням. Для цього необхідно в структурі при створенні змінних вказати їх значення.
struct Cat
{
//змінні структури зі значенням по замовчуванню
std::string name = "Myrko";
int age = 2;
};
Такі змінні можна використовувати відразу.
Якщо ви маєте змінну типу структура, то ви можете присвоїти всі значення даної структури іншій змінній. Для цього інша змінна обов’язково має бути такого ж самого типу (тобто, вони мають бути створенні від однієї структури). Щоб це зробити, варто, просто через нак присвоєння вказати ім’я структури.
#include <iostream>
//Створюємо структуру з іменем Cat
struct Cat
{
//змінні структури зі значеннями по замовчуванню
std::string name = "Myrko";
int age = 2;
};
int main()
{
//сторюємо змінну типу структура Cat. ім'я змінної kit
Cat kit;
//ми можемо отримати інформацію від користувача
std::cout << "input name cat" << std::endl;
std::cin >> kit.name;
std::cout << "input age cat" << std::endl;
std::cin >> kit.age;
Cat kotuk;
//присвоюємо значення змінної kit у змінну kotuk
kotuk = kit;
//використовуємо інформацію зі структури
//та переконуємос, що змінні однакові
std::cout << "\nkit:\nname: " << kit.name << "\nage: " << kit.age;
std::cout << "\n\nkotuk:\nname: " << kotuk.name << "\nage: " << kotuk.age;
return 0;
}
Також ви можете використовувати змінні однієї структури в іншій. Для цього необхідно лише створити змінну типу структура (яку ви хочете використовувати) в серединні іншої структури (в тій де збирається використовувати). До таких змінних доводиться звертатися через внутрішню зміну.
#include <iostream>
struct Name_Cat
{
std::string name;
};
struct Cat
{
int age;
//створюємо змінну типу структура в середині іншої структури
Name_Cat name_cat;
};
int main()
{
Cat kit;
kit.age = 3;
//присвоюємо значення змінній, що знаходиться в середині структури
//зверніть увагу, що використовуємо внутрішню змінну
kit.name_cat.name = "Kysach";
std::cout << "name: " << kit.name_cat.name << "\nage: " << kit.age;
return 0;
}
Ви можете створювати структуру в середині іншої структури. Для того, щоб використовувати змінні з внутрішньої структури потрібно буде створити змінну через яку будете звертатися до внутрішньої структури (тобто, створити змінну з типом внутрішньої структури).
#include <iostream>
struct Cat
{
int age;
//створюємо структуру в середині іншої структури
struct Name_Cat
{
std::string name;
};
//для того щоб використовувати внутрішню структуру потрібно створити змінну
Name_Cat name_cat;
};
int main()
{
Cat kit;
kit.age = 3;
//присвоюємо значення змінній, що знаходиться в середині структури
kit.name_cat.name = "Kysach";
std::cout << "name: " << kit.name_cat.name << "\nage: " << kit.age;
return 0;
}