Структури в C++
Ми часто стикаємося з ситуаціями, коли нам потрібно зберігати групу даних схожих чи несхожих типів даних. Ми бачили масиви в C++, які використовуються для зберігання набору даних подібних типів у безперервних розташуваннях пам’яті.
На відміну від масивів, Структури в C++ це визначені користувачем типи даних, які використовуються для зберігання групи елементів різнорідних типів даних.
Що таке структура?
Структура — це визначений користувачем тип даних у C/C++. Структура створює тип даних, який можна використовувати для групування елементів, можливо, різних типів в один тип.
Структури в C++
Як створити структуру?
Ключове слово «struct» використовується для створення структури. Загальний синтаксис для створення структури наведено нижче:
struct structureName{ member1; member2; member3; . . . memberN; }; Структури в C++ можуть містити два типи членів:
- Елемент даних: ці члени є звичайними змінними C++. Ми можемо створити структуру зі змінними різних типів даних у C++. Функції-члени: ці члени є звичайними функціями C++. Разом зі змінними ми також можемо включити функції в оголошення структури.
приклад :
C++
// Data Members> int> roll;> int> age;> int> marks;> > // Member Functions> void> printDetails()> {> > cout < <> 'Roll = '> <'
'; cout < <'Age = ' < '
'; cout < <'Marks = ' < }> |
У наведеній вище структурі членами даних є три цілі змінні для зберігання номер рулону, вік і позначки будь-якого студента, а функція-член є printDetails() який друкує всі вищевказані дані будь-якого студента.
Як оголосити структурні змінні?
Структурна змінна може бути оголошена за допомогою оголошення структури або як окреме оголошення, як основні типи.
C++
// A variable declaration with structure declaration.> struct> Point> {> > int> x, y;> } p1;> // The variable p1 is declared with 'Point'> // A variable declaration like basic data types> struct> Point> {> > int> x, y;> };> int> main()> {> > struct> Point p1;> // The variable p1 is declared like a normal variable> }> |
Примітка. У C++ ключове слово struct є необов’язковим перед оголошенням змінної. У C це обов'язково.
Як ініціалізувати члени структури?
Члени структури не може бути ініціалізується декларацією. Наприклад, компіляція наступної програми на C не вдається.
Але вважається правильним у C++11 і вище.
C++
struct> Point> {> > int> x = 0;> // COMPILER ERROR: cannot initialize members here> > int> y = 0;> // COMPILER ERROR: cannot initialize members here> };> |
Причина вищевказаної помилки проста: коли тип даних оголошено, для нього не виділяється пам’ять. Пам'ять виділяється лише під час створення змінних.
Члени структури можуть бути ініціалізовані за допомогою оголошення в C++. Наприклад, наведена нижче програма C++ успішно виконується без жодних помилок.
C++
// In C++ We can Initialize the Variables with Declaration in Structure.> #include> using> namespace> std;> struct> Point {> > int> x = 0;> // It is Considered as Default Arguments and no Error is Raised> > int> y = 1;> };> int> main()> {> > struct> Point p1;> > // Accessing members of point p1> > // No value is Initialized then the default value is considered. ie x=0 and y=1;> > cout < <> 'x = '> < < p1.x < <> ', y = '> < < p1.y < // Initializing the value of y = 20; p1.y = 20; cout < < 'x = ' < < p1.x < < ', y = ' < < p1.y; return 0; } // This code is contributed by Samyak Jain> |
x=0, y=1 x=0, y=20
Члени структури можна ініціалізувати за допомогою фігурних дужок ‘{}’. Наприклад, наступна дійсна ініціалізація.
C++
struct> Point {> > int> x, y;> };> int> main()> {> > // A valid initialization. member x gets value 0 and y> > // gets value 1. The order of declaration is followed.> > struct> Point p1 = { 0, 1 };> }> |
Як отримати доступ до елементів структури?
Доступ до елементів структури здійснюється за допомогою оператора крапка (.).
C++
#include> using> namespace> std;> struct> Point {> > int> x, y;> };> int> main()> {> > struct> Point p1 = { 0, 1 };> > // Accessing members of point p1> > p1.x = 20;> > cout < <> 'x = '> < < p1.x < <> ', y = '> < < p1.y;> > return> 0;> }> |
Вихід
x = 20, y = 1
Що таке масив структур?
Як і інші примітивні типи даних, ми можемо створити масив структур.
C++
#include> using> namespace> std;> struct> Point {> > int> x, y;> };> int> main()> {> > // Create an array of structures> > struct> Point arr[10];> > // Access array members> > arr[0].x = 10;> > arr[0].y = 20;> > cout < < arr[0].x < <> ' '> < < arr[0].y;> > return> 0;> }> |
Вихід
10 20
Що таке покажчик структури?
Як і примітивні типи, ми можемо мати покажчик на структуру. Якщо у нас є покажчик на структуру, доступ до елементів здійснюється за допомогою оператора стрілка ( -> ), а не оператора крапка (.).
C++
#include> using> namespace> std;> struct> Point {> > int> x, y;> };> int> main()> {> > struct> Point p1 = { 1, 2 };> > // p2 is a pointer to structure p1> > struct> Point* p2 = &p1;> > // Accessing structure members using> > // structure pointer> > cout ' ' return 0; }> |
Вихід
1 2
Що таке вирівнювання елементів структури?
Побачити Дізнайтеся більше про відмінності між структурами та класами в C++ .