Структури в C++

Структури в 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++ .



Вам Може Сподобатися