C++ Побудова з прикладом

Що таке структура C++?

A СТРУКТУРА це C++ структура даних, яку можна використовувати для спільного зберігання елементів різних типів даних. в C++, структура — це визначений користувачем тип даних. Структура створює тип даних для групування елементів різних типів даних під одним типом даних.

Наприклад:

Припустімо, вам потрібно зберегти інформацію про когось, його ім’я, громадянство та вік. Ви можете створити такі змінні, як ім’я, громадянство та вік, щоб зберігати дані окремо.

Однак у майбутньому вам може знадобитися зберігати інформацію про багатьох осіб. Це означає, що будуть створені змінні для різних осіб. Наприклад, ім'я1, громадянство1, вік1 тощо. Щоб цього уникнути, краще створити структуру.

Коли використовувати структуру?

Ось кілька причин використання структури в C++.

  • Використовуйте структуру, коли вам потрібно зберігати елементи різних типів даних в одному типі даних.
  • C++ structs є типом значення, а не типом посилання. Використовуйте структуру, якщо ви не збираєтеся змінювати дані після створення.

C++ Ініціалізація структури

Щоб створити C++ структури, ми використовуємо ключове слово struct, за яким йде ідентифікатор. Ідентифікатор стає назвою структури. Ось синтаксис для створення a C++ структура:

Синтаксис:

struct struct_name  
{  
     // struct members
}   

У наведеному вище синтаксисі ми використали ключове слово struct. struct_name — це ім’я структури.

Члени структури додаються у фігурних дужках. Ймовірно, ці члени належать до різних типів даних.

Наприклад:

struct Person  
{  
    char name[30];  
     int citizenship;  
     int age;  
}  

У наведеному вище прикладі Person є структурою з трьох членів. Члени включають ім'я, громадянство та вік. Один член має тип даних char, тоді як решта 2 є цілими числами, коли створюється структура, пам’ять не виділяється. Пам'ять виділяється лише після додавання змінної до структури.

Створення екземплярів структури

У наведеному вище прикладі ми створили структуру під назвою Person. Ми можемо створити структурну змінну наступним чином:

Person p;

p є структурною змінною типу Person. Ми можемо використовувати цю змінну для доступу до членів структури.

Доступ до членів структури

Щоб отримати доступ до членів структури, ми використовуємо екземпляр структури та оператор крапки (.). Наприклад, щоб отримати доступ до віку члена структури Person:

p.age = 27;

Ми отримали доступ до віку члена структури Person за допомогою екземпляра структури, стор. Потім ми встановили значення віку члена 27.

Приклад 1:

#include <iostream>    
using namespace std;
struct Person
{
	int citizenship;
	int age;
};
int main(void) {
	struct Person p;
	p.citizenship = 1;
	p.age = 27;
	cout << "Person citizenship: " << p.citizenship << endl;
	cout << "Person age: " << p.age << endl;

	return 0;
}

вихід:

Доступ до членів структури

Ось скріншот коду:

Доступ до членів структури

Пояснення коду:

  1. Включіть файл заголовка iostream у нашу програму, щоб використовувати визначені в ньому функції.
  2. Включіть простір імен std, щоб використовувати його класи без його виклику.
  3. Створіть структуру під назвою Person.
  4. Початок тіла структури.
  5. Створіть член структури з іменем громадянство типу integer.
  6. Створіть член структури з іменем age типу integer.
  7. Кінець тіла структури.
  8. Виклик функції main(). Логіку програми слід додати в тіло цієї функції.
  9. Створіть екземпляр структури Person і надайте їй ім’я p.
  10. Встановіть значення громадянства члена структури на 1.
  11. Встановіть для параметра struct member age значення 27.
  12. Виведіть значення громадянства члена структури на консолі поряд з іншим текстом.
  13. Надрукуйте значення віку члена структури на консолі поряд з іншим текстом.
  14. Програма має повернути значення, якщо вона працює успішно.
  15. Кінець функції main().

Покажчики на структуру

Можна створити покажчик, який вказує на структуру. Це подібно до того, як створюються покажчики, що вказують на власні типи даних, такі як int, float, double тощо. Зауважте, що покажчик у C++ зберігатиме місце в пам'яті.

Приклад 2:

#include <iostream>
using namespace std;

struct Length
{
	int meters;
	float centimeters;
};

int main()
{
	Length *ptr, l;

	ptr = &l;

	cout << "Enter meters: ";
	cin >> (*ptr).meters;
	cout << "Enter centimeters: ";
	cin >> (*ptr).centimeters;
	cout << "Length = " << (*ptr).meters << " meters " << (*ptr).centimeters << " centimeters";

	return 0;
}

вихід:

Покажчики на структуру

Ось скріншот коду:

Покажчики на структуру

Пояснення коду:

  1. Включіть файл заголовка iostream у нашу програму, щоб використовувати його функції.
  2. Включіть простір імен std у нашу програму, щоб використовувати його класи без його виклику.
  3. Створіть структуру з назвою Length.
  4. Початок тіла структури Довжина.
  5. Створіть член структури з іменем метр цілочисельного типу даних.
  6. Створіть член структури з іменем сантиметри типу integer.
  7. Кінець корпусу конструкції Довжина.
  8. Виклик функції main().
  9. Початок тіла функції main().
  10. Створіть змінну-вказівник *ptr і звичайну змінну l типу Length.
  11. Зберігайте адресу змінної l у нашому змінна вказівника.
  12. Відображення повідомлення на консолі з проханням користувача ввести значення для змінних лічильників.
  13. Прочитайте значення, введене користувачем за допомогою клавіатури. Доступ до вимірювачів функції-члена тут здійснюється за допомогою змінної покажчика.
  14. Вивести на консоль повідомлення з проханням ввести значення змінних сантиметрів.
  15. Прочитати значення, введене користувачем за допомогою клавіатури. Тут доступ до функції-члена сантиметри здійснюється за допомогою змінної покажчика.
  16. Відображати значення, прочитані користувачем, на консолі поряд з іншим текстом.
  17. Після успішного виконання програма повинна повернути значення.
  18. Кінець тіла функції main().

Структура як аргумент функції

Ви можете передати структуру функції як аргумент. Це робиться так само, як передача звичайного аргументу. Структурні змінні також можна передати функції. Хороший приклад, коли вам потрібно відобразити значення членів структури. Давайте продемонструємо це:

Приклад 3:

#include<iostream>
using namespace std;

struct Person
{
	int citizenship;
	int age;
};

void func(struct Person p);

int main()
{
	struct Person p;

	p.citizenship = 1;
	p.age = 27;

	func(p);
	return 0;
}
void func(struct Person p)
{
	cout << " Person citizenship: " << p.citizenship<<endl;
	cout << " Person age: " << p.age;
}

вихід:

Структура як аргумент функції

Ось скріншот коду:

Структура як аргумент функції

Пояснення коду:

  1. Включіть файл заголовка iostream у наш файл. Потім ми будемо використовувати його функції без помилок.
  2. Включіть простір імен std у нашу програму, щоб використовувати його класи. Нам не потрібно буде викликати простір імен, щоб використовувати його класи.
  3. Створіть структуру під назвою Person.
  4. Початок тіла структури Person.
  5. Створіть член структури Person. Член називається громадянством і має тип integer.
  6. Створіть член структури Person. Член має назву age і має тип integer.
  7. Кінець тіла структури Person.
  8. Створіть функцію, яка приймає екземпляр структури Person, p, як аргумент.
  9. Виклик головної функції. { позначає початок тіла функції main().
  10. Створіть екземпляр структури Person і надайте йому ім’я p.
  11. Отримайте доступ до змінної-члена структури, використовуючи екземпляр структури, p, і присвоївши їй значення 1.
  12. Отримайте доступ до змінної age члена структури, використовуючи екземпляр структури p і присвоївши їй значення 27.
  13. Викличте функцію та передайте їй екземпляр структури Person, p, як аргумент.
  14. Функція повинна повертати значення після успішного виконання.
  15. Кінець тіла функції main().
  16. Створіть тіло функції.
  17. Початок тіла функції.
  18. Отримайте доступ до значення громадянства члена структури та роздрукуйте його на консолі разом з іншим текстом.
  19. Доступ до значення віку члена структури та друк його на консолі разом з іншим текстом.
  20. Кінець тіла функції.

Обмеження a C++ структура

Нижче наведено обмеження структур:

  • Тип даних struct не можна розглядати як вбудовані типи даних.
  • Operaтакі як + -, а інші не можна використовувати на структурні змінні.
  • Структури не підтримують приховування даних. До членів структури може бути доступна будь-яка функція незалежно від її області.
  • Статичні елементи не можуть бути оголошені всередині тіла структури.
  • Конструктори не можуть бути створені всередині структури.

Підсумки

  • Структура — це структура даних, яка зберігає елементи даних, що належать до різних типів.
  • Тоді як масив зберігає елементи даних подібного типу, структура зберігає елементи даних різних типів.
  • Структуру слід використовувати, коли не очікується, що елементи даних змінять значення.
  • Доступ до членів структури здійснюється за допомогою оператора крапка (.).
  • Ми повинні створити екземпляр структури.
  • Щоб створити C++ struct, ми використовуємо ключове слово struct.
  • Покажчики, що вказують на структуру, створюються подібно до того, як створюються вказівники, які вказують на звичайні типи.
  • Структура може бути передана як аргумент функції так само, як передаються звичайні функції.