C++ Struktuur näitega

Milles on struktuur C++?

A STRUKT on C++ andmestruktuur, mida saab kasutada erinevate andmetüüpide elementide koos salvestamiseks. sisse C++, on struktuur kasutaja määratud andmetüüp. Struktuur loob andmetüübi erinevate andmetüüpide üksuste rühmitamiseks ühe andmetüübi alla.

Näiteks:

Oletame, et peate salvestama teavet kellegi kohta, tema nime, kodakondsust ja vanust. Andmete eraldi salvestamiseks saate luua muutujaid, nagu nimi, kodakondsus ja vanus.

Siiski võib tekkida vajadus salvestada teavet paljude inimeste kohta tulevikus. See tähendab, et erinevatele isikutele luuakse muutujad. Näiteks nimi1, kodakondsus1, vanus1 jne. Selle vältimiseks on parem luua struktuur.

Millal struktuuri kasutada?

Siin on mõned struktuuri kasutamise põhjused C++.

  • Kasutage struktuuri, kui peate salvestama erinevat tüüpi andmetüüpe elemente ühe andmetüübi alla.
  • C++ struktuurid on pigem väärtuse tüüp kui viitetüüp. Kasutage struktuuri, kui te ei kavatse oma andmeid pärast loomist muuta.

C++ Struktuuri initsialiseerimine

Et luua a C++ struktuur, kasutame märksõna struct, millele järgneb identifikaator. Identifikaatorist saab struktuuri nimi. Siin on a loomise süntaks C++ struktuur:

süntaksit:

struct struct_name  
{  
     // struct members
}   

Ülaltoodud süntaksis oleme kasutanud märksõna struct. Struktuuri_nimi on struktuuri nimi.

Struktuurielemendid lisatakse lokkis trakside sisse. Need liikmed kuuluvad tõenäoliselt erinevatesse andmetüüpidesse.

Näiteks:

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

Ülaltoodud näites on isik kolmeliikmeline struktuur. Liikmete hulka kuuluvad nimi, kodakondsus ja vanus. Üks liige on char andmetüüpi, ülejäänud 2 on struktuuri loomisel täisarvud, mälu ei eraldata. Mälu eraldatakse alles pärast muutuja lisamist struktuurile.

Struktuurieksemplaride loomine

Ülaltoodud näites oleme loonud struktuuri nimega Isik. Struktuurimuutuja saame luua järgmiselt:

Person p;

P on struktuurimuutuja tüüpi Isik. Seda muutujat saame kasutada struktuuri liikmetele juurdepääsuks.

Juurdepääs struktuuriliikmetele

Struktuuri liikmetele juurdepääsuks kasutame struktuuri eksemplari ja punkti (.) operaatorit. Näiteks struct Person liikme vanusele juurdepääsuks:

p.age = 27;

Oleme jõudnud struktuuri Isiku liikme vanusele, kasutades structi eksemplari, lk. Seejärel seadsime liikme vanuse väärtuseks 27. eluaastat.

Näide 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;
}

Väljund:

Juurdepääs struktuuriliikmetele

Siin on koodi ekraanipilt:

Juurdepääs struktuuriliikmetele

Koodi selgitus:

  1. Lisage meie programmi iostreami päisefail, et kasutada selles määratletud funktsioone.
  2. Kaasake std-nimeruum, et kasutada selle klasse ilma seda kutsumata.
  3. Looge struktuur nimega Isik.
  4. Struktuuri keha algus.
  5. Loo struktuuriliige nimega kodakondsus tüübiga täisarv.
  6. Loo struktuuriliige nimega täisarvu tüübi vanus.
  7. Struktuuri keha lõpp.
  8. Kutsuge funktsioon main(). Programmi loogika tuleks lisada selle funktsiooni kehasse.
  9. Looge struktuuri Isik eksemplar ja andke sellele nimi p.
  10. Määrake struktuuri liikme kodakondsuse väärtuseks 1.
  11. Määrake struktuuriliikme vanuse väärtuseks 27.
  12. Trüki konsoolile mõne muu teksti kõrvale ka struktuuri liikme kodakondsuse väärtus.
  13. Printige konsoolile koos mõne muu tekstiga struktuuriliikme vanuse väärtus.
  14. Kui programm töötab edukalt, peaks see väärtuse tagastama.
  15. Funktsiooni main() lõpp.

Osutajad struktuurile

Võimalik on luua kursor, mis osutab struktuurile. See sarnaneb sellele, kuidas luuakse viiteid, mis osutavad natiivsetele andmetüüpidele, nagu int, float, double jne. Pange tähele, et kursor sisse C++ salvestab mälukoha.

Näide 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;
}

Väljund:

Osutajad struktuurile

Siin on koodi ekraanipilt:

Osutajad struktuurile

Koodi selgitus:

  1. Selle funktsioonide kasutamiseks lisage meie programmi iostreami päisefail.
  2. Lisage meie programmi std nimeruum, et kasutada selle klasse ilma seda kutsumata.
  3. Looge struktuur nimega Length.
  4. Struktuuri keha algus Pikkus.
  5. Looge täisarvulise andmetüübi struktuuriliige nimega meetrid.
  6. Loo struktuuriliige nimega sentimeetrid täisarvu tüübiga.
  7. Struktuuri keha ots Pikkus.
  8. Kutsuge funktsioon main().
  9. Funktsiooni main() keha algus.
  10. Loo kursormuutuja *ptr ja normaalmuutuja l tüübiga Length.
  11. Salvestage muutuja l aadress meie osuti muutuja.
  12. Kuvage konsoolil teade, milles palutakse kasutajal sisestada muutuvate arvestite väärtus.
  13. Lugege kasutaja sisestatud väärtust klaviatuuri kaudu. Liikmete funktsioonimõõturitele pääseb siin juurde kursori muutuja abil.
  14. Kuvage konsoolil teade, milles palutakse kasutajal sisestada muutuvate sentimeetrite väärtus.
  15. Lugege kasutaja sisestatud väärtust klaviatuuri kaudu. Liikmefunktsiooni sentimeetrid pääseb siin juurde kursori muutuja abil.
  16. Kuvage kasutajalt loetud väärtused konsoolil koos mõne muu tekstiga.
  17. Programm peab eduka täitmise korral tagastama väärtuse.
  18. Funktsiooni main() keha lõpp.

Struktuur kui funktsiooni argument

Struktuuri saab anda funktsioonile argumendina. Seda tehakse samamoodi nagu tavalise argumendi edastamine. Struktuurimuutujaid saab edastada ka funktsioonile. Hea näide on see, kui peate kuvama struktuuriliikmete väärtused. Näitame seda:

Näide 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;
}

Väljund:

Struktuur kui funktsiooni argument

Siin on koodi ekraanipilt:

Struktuur kui funktsiooni argument

Koodi selgitus:

  1. Kaasake iostreami päisefail meie faili. Seejärel kasutame selle funktsioone ilma vigadeta.
  2. Selle klasside kasutamiseks lisage meie programmi std nimeruum. Me ei pea selle klasside kasutamiseks nimeruumi kutsuma.
  3. Looge struktuur nimega Isik.
  4. Struktuuri keha algus Isik.
  5. Looge struct Person liige. Liikme nimeks on kodakondsus ja selle tüüp on täisarv.
  6. Looge struct Person liige. Liikmel on vanus ja selle tüüp on täisarv.
  7. Struktuuri keha lõpp Isik.
  8. Looge funktsioon, mis võtab argumendiks struct Isiku eksemplari p.
  9. Helista põhifunktsioonile. { tähistab funktsiooni main() keha algust.
  10. Looge struct Person eksemplar ja andke sellele nimi p.
  11. Juurdepääs struktuuriliikme muutujale kodakondsus, kasutades struktuuri eksemplari p ja määrates sellele väärtuse 1.
  12. Juurdepääs struktuuriliikme muutujale vanus, kasutades struktuuri eksemplari p ja määrates sellele väärtuse 27.
  13. Kutsuge funktsioon välja ja edastage sellele argumendiks struktuuri Isik p.
  14. Funktsioon peab eduka täitmise korral tagastama väärtuse.
  15. Funktsiooni main() keha lõpp.
  16. Looge funktsiooni keha.
  17. Funktsiooni keha algus.
  18. Juurdepääs struktuuriliikme kodakondsuse väärtusele ja selle printimine konsoolile koos muu tekstiga.
  19. Juurdepääs struktuuriliikme vanuse väärtusele ja selle printimine konsoolil koos muu tekstiga.
  20. Funktsiooni keha lõpp.

Piirang a C++ struktuur

Struktuuride piirangud on järgmised:

  • Struktuuri andmetüüpi ei saa käsitleda nagu sisseehitatud andmetüüpe.
  • Operatorid nagu + - ja teisi ei saa kasutada struktuurimuutujad.
  • Struktuurid ei toeta andmete peitmist. Struktuuri liikmetele pääseb juurde mis tahes funktsioon, olenemata selle ulatusest.
  • Staatilisi osi ei saa konstruktsiooni korpuses deklareerida.
  • Konstruktoreid ei saa luua struktuuri sees.

kokkuvõte

  • Struktuur on andmestruktuur, mis salvestab eri tüüpidesse kuuluvaid andmeelemente.
  • Kui massiiv salvestab sarnast tüüpi andmeelemente, siis struktuur salvestab erinevat tüüpi andmeelemente.
  • Struktuuri tuleks kasutada siis, kui andmeelementide väärtust eeldatavasti ei muudeta.
  • Struktuuri liikmetele pääseb juurde operaatori punkti (.) abil.
  • Peame looma struktuuri eksemplari.
  • Et luua a C++ struct, kasutame märksõna struct.
  • Struktuurile osutavad osutid luuakse sarnaselt tavatüüpidele osutavate osutite loomisega.
  • Struktuuri saab edastada funktsioonile argumendina samamoodi nagu tavalisi funktsioone.