Joudumme usein kohtaamaan tilanteita, joissa meidän on tallennettava joukko tietoja, olivatpa ne samantyyppisiä tai ei-samankaltaisia. Olemme nähneet C++:ssa taulukoita, joita käytetään tallentamaan samantyyppisiä tietotyyppejä vierekkäisiin muistipaikkoihin.
Toisin kuin Arrays, Rakenteet C++:ssa ovat käyttäjän määrittämiä tietotyyppejä, joita käytetään ei-samankaltaisten tietotyyppien ryhmän tallentamiseen.
Mikä on rakenne?
Rakenne on käyttäjän määrittämä tietotyyppi C/C++:ssa. Rakenne luo tietotyypin, jonka avulla voidaan ryhmitellä mahdollisesti erityyppisiä kohteita yhdeksi tyypiksi.

Rakenteet C++:ssa
Kuinka luoda rakenne?
'struct'-avainsanaa käytetään rakenteen luomiseen. Yleinen syntaksi rakenteen luomiseksi on seuraava:
struct structureName{ member1; member2; member3; . . . memberN; };> C++:n rakenteet voivat sisältää kahdenlaisia jäseniä:
- Datajäsen: Nämä jäsenet ovat normaaleja C++-muuttujia. Voimme luoda C++:ssa rakenteen eri tietotyyppien muuttujista. Jäsentoiminnot: Nämä jäsenet ovat normaaleja C++-funktioita. Muuttujien lisäksi voimme sisällyttää myös funktioita rakennemäärittelyyn.
Esimerkki :
kuinka löytää piilotettuja sovelluksia Androidista
C++
// Data Members> int> roll;> int> age;> int> marks;> > // Member Functions> void> printDetails()> {> >cout<<>'Roll = '><'
'; cout<<'Age = '< '
'; cout<<'Marks = '< }> |
>
>
Yllä olevassa rakenteessa datajäsenet ovat kolme tallennettavaa kokonaislukumuuttujaa rullan numero, ikä ja merkit minkä tahansa opiskelijan ja jäsentehtävä on printDetails() joka tulostaa kaikki yllä olevat tiedot mistä tahansa opiskelijasta.
Kuinka määritellä rakennemuuttujat?
Rakennemuuttuja voidaan ilmoittaa joko rakennemäärityksellä tai erillisenä ilmoituksena kuten perustyypit.
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> }> |
>
>
Huomautus: C++:ssa struct-avainsana on valinnainen ennen muuttujan määrittelyä. C:ssä se on pakollinen.
Kuinka alustaa rakenteen jäsenet?
Rakenteen jäsenet ei voi olla alustettu ilmoituksella. Esimerkiksi seuraavan C-ohjelman kääntäminen epäonnistuu.
Mutta sitä pidetään oikeana C++11:ssä ja uudemmissa.
C++
struct> Point> {> >int> x = 0;>// COMPILER ERROR: cannot initialize members here> >int> y = 0;>// COMPILER ERROR: cannot initialize members here> };> |
>
>
Syy yllä olevaan virheeseen on yksinkertainen, kun tietotyyppi on ilmoitettu, sille ei varata muistia. Muisti varataan vain, kun muuttujat luodaan.
paikallinen java
Rakenteen jäsenet voidaan alustaa deklaraatiolla C++:ssa. Esimerkiksi seuraava C++-ohjelma suoritetaan onnistuneesti aiheuttamatta virheitä.
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>
Rakenteen jäsenet voidaan alustaa käyttämällä aaltosulkeet '{}'. Esimerkiksi seuraava on kelvollinen alustus.
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 };> }> |
>
>
Kuinka päästä käsiksi rakenteen elementteihin?
Rakenteen jäseniin päästään käyttämällä piste (.) -operaattoria.
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;> }> |
>
>Lähtö
x = 20, y = 1>
Mikä on joukko rakenteita?
Kuten muutkin primitiiviset tietotyypit, voimme luoda joukon rakenteita.
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;> }> |
>
>Lähtö
10 20>
Mikä on rakenneosoitin?
Kuten primitiiviset tyypit, meillä voi olla osoitin rakenteeseen. Jos meillä on osoitin rakenteeseen, jäseniin päästään käyttämällä nuoli ( -> ) -operaattoria piste (.) -operaattorin sijaan.
C++
lajitella kasa
#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; }> |
>
>Lähtö
1 2>
Mikä on rakenteen jäsenten kohdistus?
Katso Lue lisää C++:n rakenteiden ja luokan eroista .