C++ Rakenna esimerkillä

⚡ Älykäs yhteenveto

Rakenna sisään C++ on käyttäjän määrittämä tietotyyppi, joka ryhmittelee eri tietotyyppien elementtejä yhden nimen alle, jolloin yksi muuttuja voi sisältää toisiinsa liittyviä arvoja, kuten henkilön nimen, kansalaisuuden ja iän.

  • 📦 Erilaiset tietotyypit: Rakenne ryhmittelee erityyppiset muuttujat yhden käyttäjän määrittämän nimen alle.
  • 🔑 struct-avainsana: Määrittele rakenne avainsanalla struct ja listaa sitten jäsenet aaltosulkeiden sisällä.
  • 🧱 Instanssien luominen: Kirjoitettaessa Person p luodaan struct-muuttuja ja varataan sille muistia.
  • 🎯 Pisteoperaattori: Lue tai aseta mikä tahansa jäsen instanssin kautta, kuten p.age = 27:ssä.
  • ➡️ Osoittimet ja funktiot: Rakenne toimii osoittimien avulla ja välittää arvot funktiolle tavallisen argumentin tavoin.
  • 🤖 AI-apu: GitHub Copilot ja muut tekoälyavustajat luovat rakennemääritelmiä ja jäsenten käyttöoikeuksia kommentin kautta.

C++ struct

Mikä on rakenne C++?

STRUKTUURI on C++ tietorakenne, jota voidaan käyttää eri tietotyyppien elementtien tallentamiseen yhteen. sisään C++, rakenne on käyttäjän määrittämä tietotyyppi. Rakenne luo tietotyypin ryhmälleping eri tietotyyppien alkiot yhden tietotyypin alle.

Esimerkiksi:

Oletetaan, että sinun on tallennettava tietoja henkilöstä, hänen nimensä, kansalaisuutensa ja iänsä. Voit luoda muuttujia, kuten nimen, kansalaisuuden ja iän, tallentaaksesi tiedot erikseen.

Saatat kuitenkin tulevaisuudessa joutua tallentamaan tietoja useista henkilöistä. Tämä tarkoittaa, että eri yksilöille luodaan muuttujia. Esimerkiksi nimi1, kansalaisuus1, ikä1 jne. Tämän välttämiseksi on parempi luoda struktuuri.

Milloin rakennetta käytetään?

Tässä on joitain syitä käyttää rakennetta C++.

  • Käytä rakennetta, kun haluat tallentaa eri tietotyyppien elementtejä samaan tietotyyppiin.
  • C++ structs ovat arvotyyppi eikä viitetyyppi. Käytä rakennetta, jos et aio muokata tietojasi luomisen jälkeen.

C++ Rakenteen alustus

Luo a C++ rakenne, käytämme struct-avainsanaa, jota seuraa tunniste. Tunnisteesta tulee rakenteen nimi. Tässä on syntaksi a:n luomiselle C++ rakenne:

Syntaksi:

struct struct_name  
{  
     // struct members
}   

Yllä olevassa syntaksissa olemme käyttäneet struct-avainsanaa. Rakenteen_nimi on rakenteen nimi.

Rakenneosat lisätään kiharaisiin aaltosulkeisiin. Nämä jäsenet kuuluvat todennäköisesti eri tietotyyppeihin.

Esimerkiksi:

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

Yllä olevassa esimerkissä henkilö on rakenne, jossa on kolme jäsentä. Jäsenet ovat nimi, kansalaisuus ja ikä. Yksi jäsen on char-tietotyyppiä, kun taas loput 2 ovat kokonaislukuja, kun rakenne luodaan, muistia ei varata. Muisti varataan vasta, kun muuttuja on lisätty rakenteeseen.

Rakenneesiintymien luominen

Yllä olevassa esimerkissä olemme luoneet rakenteen nimeltä Henkilö. Voimme luoda rakennemuuttujan seuraavasti:

Person p;

P on henkilötyypin rakennemuuttuja. Voimme käyttää tätä muuttujaa päästäksemme rakenteen jäseniin.

Pääsy rakenteen jäseniin

Rakenteen jäseniin pääsemiseksi käytämme rakenteen esiintymää ja piste (.) -operaattoria. Esimerkiksi, jos haluat käyttää struct Person -jäsenen ikää:

p.age = 27;

Olemme käyttäneet struct Person -jäsenen ikää structin ilmentymän avulla, s. Tämän jälkeen olemme asettanut jäsenen iän arvoksi 27 vuotta.

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

lähtö:

Pääsy rakenteen jäseniin

Tässä on kuvakaappaus koodista:

Pääsy rakenteen jäseniin

Code Selitys:

  1. Sisällytä iostream-otsikkotiedosto ohjelmaamme käyttääksesi siinä määritettyjä toimintoja.
  2. Sisällytä std-nimiavaruus, jotta voit käyttää sen luokkia kutsumatta sitä.
  3. Luo rakenne nimeltä Henkilö.
  4. Rakenteen rungon alku.
  5. Luo rakenteen jäsen nimeltä kansalaisuus, jonka tyyppi on kokonaisluku.
  6. Luo rakenteen jäsen nimeltä ikä, jonka tyyppi on kokonaisluku.
  7. Rakenteen rungon loppu.
  8. Kutsu main()-funktiota. Ohjelmalogiikka tulisi lisätä tämän funktion runkoon.
  9. Luo ilmentymä rakenteesta Person ja anna sille nimi p.
  10. Aseta struct-jäsenen kansalaisuuden arvoksi 1.
  11. Aseta rakenteen jäsenen iän arvoksi 27.
  12. Tulosta konsoliin struct-jäsenen kansalaisuuden arvo jonkin muun tekstin rinnalle.
  13. Tulosta struct-jäsenen iän arvo konsoliin jonkin muun tekstin rinnalle.
  14. Ohjelman pitäisi palauttaa arvo, jos se toimii onnistuneesti.
  15. Main()-funktion loppu.

Osoittimet rakenteeseen

On mahdollista luoda osoitin, joka osoittaa rakenteeseen. Se on samanlainen kuin osoittimien luominen, jotka osoittavat alkuperäisiin tietotyyppeihin, kuten int, float, double jne.. Huomaa, että osoitin sisään C++ tallentaa muistipaikan.

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

lähtö:

Osoittimet rakenteeseen

Tässä on kuvakaappaus koodista:

Osoittimet rakenteeseen

Code Selitys:

  1. Sisällytä iostream-otsikkotiedosto ohjelmaamme, jotta voit käyttää sen toimintoja.
  2. Sisällytä std-nimiavaruus ohjelmaamme, jotta voit käyttää sen luokkia kutsumatta sitä.
  3. Luo rakenne nimeltä pituus.
  4. Rakenteen rungon alku Pituus.
  5. Luo rakenteen jäsen nimeltä metrejä, joiden tietotyyppi on kokonaisluku.
  6. Luo rakenteen jäsen nimeltä senttimetrit ja jonka tyyppi on kokonaisluku.
  7. Rakenteen rungon pää Pituus.
  8. Kutsu main()-funktiota.
  9. Main()-funktion rungon alku.
  10. Luo osoitinmuuttuja *ptr ja normaalimuuttuja l tyyppiä Length.
  11. Tallenna muuttujan l osoite meidän osoittimen muuttuja.
  12. Näytä konsoliin viesti, jossa käyttäjää pyydetään syöttämään muuttuvien mittarien arvo.
  13. Lue käyttäjän näppäimistöllä syöttämä arvo. Jäsenfunktiomittareita käytetään tässä osoitinmuuttujan avulla.
  14. Näytä konsolissa viesti, jossa pyydetään käyttäjää syöttämään muuttuvien senttimetrien arvo.
  15. Lue käyttäjän näppäimistöllä syöttämä arvo. Jäsenfunktion senttimetreihin päästään tässä osoitinmuuttujan avulla.
  16. Näytä käyttäjältä luetut arvot konsolissa jonkin muun tekstin rinnalla.
  17. Ohjelman on palautettava arvo onnistuneen suorituksen jälkeen.
  18. Main()-funktion rungon loppu.

Rakenne funktion argumenttina

Voit välittää rakenteen funktiolle argumenttina. Tämä tehdään samalla tavalla kuin normaali argumentti. Rakennemuuttujat voidaan välittää myös funktiolle. Hyvä esimerkki on, kun sinun on näytettävä rakenteen jäsenten arvot. Osoitetaan tämä:

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

lähtö:

Rakenne funktion argumenttina

Tässä on kuvakaappaus koodista:

Rakenne funktion argumenttina

Code Selitys:

  1. Sisällytä iostream-otsikkotiedosto tiedostoomme. Sitten käytämme sen toimintoja ilman virheitä.
  2. Sisällytä std-nimiavaruus ohjelmaamme käyttääksesi sen luokkia. Meidän ei tarvitse kutsua nimiavaruutta käyttääksemme sen luokkia.
  3. Luo rakenne nimeltä Henkilö.
  4. Rakenteen persoonan alku.
  5. Luo jäsen struct Personiin. Jäsen on nimeltään kansalaisuus ja on tyyppiä kokonaisluku.
  6. Luo jäsen struct Personiin. Jäsen on nimeltään ikä ja se on tyyppiä kokonaisluku.
  7. Struktuurihenkilön rungon loppu.
  8. Luo funktio, joka ottaa argumentiksi structin Person, p, esiintymän.
  9. Kutsu päätoiminto. { merkitsee main()-funktion rungon alkua.
  10. Luo struct Person -esiintymä ja anna sille nimi p.
  11. Käytä struct-jäsenmuuttujaa kansalaisuus käyttämällä rakenteen esiintymää p ja antamalla sille arvon 1.
  12. Pääset rakenteen jäsenmuuttujaan ikä käyttämällä rakenteen esiintymää p ja antamalla sille arvon 27.
  13. Kutsu funktio ja välitä sille argumentiksi rakenteen Person, p, esiintymä.
  14. Toiminnon on palautettava arvo onnistuneen suorituksen jälkeen.
  15. Main()-funktion rungon loppu.
  16. Luo funktion runko.
  17. Toiminnon rungon alku.
  18. Käytä struct-jäsenen kansalaisuusarvoa ja tulosta se konsoliin muun tekstin rinnalle.
  19. Käytä struct-jäsenen ikäarvoa ja tulosta se konsolissa muun tekstin rinnalle.
  20. Toimintokappaleen loppu.

Rajoitus a C++ rakenne

Rakenteiden rajoitukset ovat seuraavat:

  • Rakennetietotyyppiä ei voida käsitellä kuten sisäänrakennettuja tietotyyppejä.
  • Operatorit, kuten + -, ja muita ei voida käyttää rakennemuuttujat.
  • Rakenteet eivät tue tietojen piilottamista. Rakenteen jäseniä voi käyttää mikä tahansa toiminto sen laajuudesta riippumatta.
  • Staattisia osia ei voida ilmoittaa rakenteen rungon sisällä.
  • Rakentajia ei voi luoda rakenteen sisään.

UKK

In C++ Rakenne ja luokka ovat lähes identtisiä. Ainoa todellinen ero on oletusarvoinen käyttöoikeus: rakenteen jäsenet ovat oletusarvoisesti julkisia, kun taas luokan jäsenet ovat yksityisiä. Molemmat tukevat jäsenfunktioita, konstruktoreita ja periytymistä.

AC-rakenne sisältää vain dataa, ja sinun on kirjoitettava rakenne ennen jokaista muuttujan määrittelyä. C++ struct voi sisältää myös jäsenfunktioita, konstruktoreita ja käyttöoikeusmäärittelijöitä, ja struct-avainsana on valinnainen muuttujien määrittelyssä.

Määrittele rakenne ja sitten siitä taulukko, esimerkiksi Person people[3]. Jokainen elementti on kokonainen rakenne, ja pääset jäseniin käsiksi käyttämällä tunnistetta people[0].age. Rakenteiden taulukot tallentavat useita saman tyyppisiä tietueita yhdessä.

Sisäkkäinen rakenne on rakenne, joka on ilmoitettu jäseneksi toisen rakenteen sisällä. Se ryhmittelee toisiinsa liittyviä alitietoja, kuten Date-rakenteen, joka on sijoitettu Employee-rakenteen sisään. Sisäjäseniin pääset ketjuttamalla piste-operaattorin.

Koko on karkeasti sanottuna jäsentensä summa plus kääntäjän tasausta varten lisäämä täyte, joten sizeof voi ylittää raakasumman. Jäsenfunktiot eivät lisää mitään. Jäsenten järjestäminen koon mukaan vähentää turhaa täytettä.

Käytä nuolioperaattoria, kun pidät osoitinta rakenteeseen. Oikopolun (*ptr).age sijaan ptr->age lukee saman jäsenen. Pisteoperaattori toimii suorassa instanssissa, ei osoittimessa.

Kyllä. Tekoälykoodausavustajat muuttavat lyhyen kehotteen tai kommentin kokonaiseksi tehtäväksi. C++ rakenne, mukaan lukien jäsenet, konstruktorit ja kenttien käyttöoikeudet. Tarkista aina luodut tietotyypit ja niiden yhdenmukaisuus, koska tekoäly voi ohittaa projektikohtaiset vaatimukset.

Kyllä. GitHub Copilot ehdottaa struct-määritelmiä, jäsenmuuttujia ja piste- tai nuoli-näppäimiä kirjoittaessasi editorissa. Se käsittelee toistuvat vakiomuotoiset tekstit hyvin, vaikka tyypit, täyttö ja logiikka tulisi silti tarkistaa ennen kääntämistä.

Tiivistä tämä viesti seuraavasti: