logo

Struktury w C++

Często spotykamy się z sytuacjami, w których musimy przechowywać grupę danych, niezależnie od tego, czy mają one podobne, czy niepodobne typy danych. Widzieliśmy tablice w C++, które służą do przechowywania zestawu danych podobnych typów w sąsiadujących lokalizacjach pamięci.
W odróżnieniu od tablic, Struktury w C++ to typy danych zdefiniowane przez użytkownika, które służą do przechowywania grup elementów o różnych typach danych.

Co to jest struktura?



Struktura to typ danych zdefiniowany przez użytkownika w języku C/C++. Struktura tworzy typ danych, którego można użyć do grupowania elementów możliwie różnych typów w jeden typ.

Struktury w C++

Jak stworzyć strukturę?



Do utworzenia struktury używane jest słowo kluczowe „struct”. Ogólna składnia tworzenia struktury jest pokazana poniżej:

struct structureName{ member1; member2; member3; . . . memberN; };>

Struktury w C++ mogą zawierać dwa typy elementów:

    Członek danych: ci członkowie są normalnymi zmiennymi C++. W C++ możemy stworzyć strukturę ze zmiennymi o różnych typach danych. Funkcje członkowskie: ci członkowie są normalnymi funkcjami C++. Oprócz zmiennych możemy także zawrzeć funkcje w deklaracji struktury.

Przykład :



ile miast znajduje się w stanach zjednoczonych ameryki

C++




// Data Members> int> roll;> int> age;> int> marks;> > // Member Functions> void> printDetails()> {> >cout<<>'Roll = '><' '; cout<<'Age = '< ' '; cout<<'Marks = '< }>

>

>

W powyższej strukturze elementami danych są trzy zmienne całkowite do przechowywania numer rolki, wiek i znaki dowolnego ucznia, a funkcją członkowską jest drukujSzczegóły() który drukuje wszystkie powyższe dane dowolnego ucznia.

Jak zadeklarować zmienne strukturalne?

Zmienną struktury można zadeklarować za pomocą deklaracji struktury lub jako osobną deklarację, jak typy podstawowe.

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> }>

>

>

Uwaga: W C++ słowo kluczowe struct jest opcjonalne przed deklaracją zmiennej. W C jest to obowiązkowe.

Jak zainicjować elementy struktury?
Członkowie struktury nie może być inicjalizowane deklaracją. Na przykład kompilacja następującego programu w języku C kończy się niepowodzeniem.
Ale jest uważany za poprawny w C++ 11 i nowszych wersjach.

C++




struct> Point> {> >int> x = 0;>// COMPILER ERROR: cannot initialize members here> >int> y = 0;>// COMPILER ERROR: cannot initialize members here> };>

>

>

Powód powyższego błędu jest prosty: po zadeklarowaniu typu danych nie jest dla niego przydzielana żadna pamięć. Pamięć jest przydzielana tylko podczas tworzenia zmiennych.

Elementy struktury można inicjować deklaracją w języku C++. Na przykład następujący program C++ wykonuje się pomyślnie bez zgłaszania żadnego błędu.

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>

Elementy struktury można inicjować za pomocą nawiasów klamrowych „{}”. Na przykład poniżej znajduje się prawidłowa inicjalizacja.

C++




bieżąca data w Javie
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 };> }>

>

>


Jak uzyskać dostęp do elementów konstrukcji?
Dostęp do elementów struktury uzyskuje się za pomocą operatora kropki (.).

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;> }>

>

>

Wyjście

x = 20, y = 1>

Co to jest tablica struktur?

Podobnie jak inne prymitywne typy danych, możemy tworzyć tablice struktur.

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;> }>

>

Klawiatura w dół

>

Wyjście

10 20>


Co to jest wskaźnik struktury?
Podobnie jak typy pierwotne, możemy mieć wskaźnik do struktury. Jeśli mamy wskaźnik do struktury, dostęp do elementów członkowskich uzyskujemy za pomocą operatora strzałki ( -> ) zamiast operatora kropki (.).

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; }>

>

>

Wyjście

1 2>

Co to jest wyrównanie elementów konstrukcji?
Widzieć Dowiedz się więcej o różnicach między strukturami i klasami w C++ .