Mis on struktuur C ++ -s?
Struct on C ++ andmestruktuur, mida saab kasutada, et salvestada koos elementide erinevaid andmetüüpe. C ++ keeles 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, tema nime, kodakondsuse ja vanuse kohta. Andmete eraldi salvestamiseks saate luua muutujaid nagu nimi, kodakondsus ja vanus.
Siiski peate võib-olla tulevikus salvestama teavet paljude isikute kohta. See tähendab, et luuakse muutujad erinevate indiviidide jaoks. Näiteks nimi1, kodakondsus1, vanus1 jne. Selle vältimiseks on parem luua struktuur.
Selles C ++ õpetuses saate teada:
- Mis on struktuur C ++ -s?
- Millal kasutada struktuuri?
- C ++ struktuuri initsialiseerimine
- Struktuurieksemplaride loomine
- Juurdepääs struktuuriliikmetele
- Struktuuri viited
- Struktuur funktsiooni argumendina
- C ++ struktuuri piiramine
Millal kasutada struktuuri?
Siin on mõned põhjused struktuuri kasutamiseks C ++ keeles.
- Kasutage struktuuri, kui peate ühe andmetüübi alla salvestama erinevate andmetüüpide elemente.
- 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
C ++ struktuuri loomiseks kasutame struktuuri märksõna, millele järgneb identifikaator. Identifikaatorist saab struktuuri nimi. Siin on C ++ struktuuri loomise süntaks:
Süntaks:
struct struct_name{// struct members}
Ülaltoodud süntaksis oleme kasutanud struktureeritud märksõna. Struct_name on struktuuri nimi.
Struktuuriliikmed lisatakse lokkis sulgudes. Need liikmed kuuluvad tõenäoliselt erinevat tüüpi andmetesse.
Näiteks:
struct Person{char name[30];int citizenship;int age;}
Ülaltoodud näites on inimene kolmeliikmeline struktuur. Liikmete hulka kuuluvad nimi, kodakondsus ja vanus. Üks liige on char andmetüübiga, samas kui ülejäänud 2 on täisarvud, kui struktuur luuakse, mälu ei eraldata. Mälu eraldatakse alles pärast muutuja lisamist struktuuri.
Struktuurieksemplaride loomine
Ülaltoodud näites oleme loonud struktuuri nimega Isik. Struktuurimuutuja saame luua järgmiselt:
Person p;
P on struktuuri muutuja tüüpi inimene. Seda muutujat saame kasutada struktuuri liikmetele juurdepääsuks.
Juurdepääs struktuuriliikmetele
Struktuuriliikmetele juurde pääsemiseks kasutame struktuuri eksemplari ja punkti (.) Operaatorit. Näiteks juurdepääsuks struktureeritud isiku liikme vanusele:
p.age = 27;
Struktsiooni liikme vanusele oleme pääsenud struktuuri eksemplari abil, lk. Seejärel oleme määranud liikme vanuse väärtuseks 27.
Näide 1:
#includeusing 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:
Siin on ekraanipilt koodist:
Koodi selgitus:
- Kaasake iostreami päisefail meie programmi, et kasutada selles määratletud funktsioone.
- Kaasa standardne nimeruum, et kasutada selle klasse ilma seda kutsumata.
- Looge struktuur nimega Isik.
- Struktuurse keha algus.
- Looge struktuurliige nimega kodakondsus tüüpi täisarv.
- Looge struktuurliige, mille nimi on vanuse tüüp täisarv.
- Struktuurilise keha lõpp.
- Helistage funktsioonile main (). Selle funktsiooni kehasse tuleks lisada programmiloogika.
- Looge struktuur Isiku eksemplar ja andke talle nimi p.
- Määrake struktureeritud liikme kodakondsuse väärtuseks 1.
- Määrake struktureeritud liikme vanuse väärtuseks 27.
- Trükkige konsoolile mõne muu teksti kõrvale struktureeritud liikme kodakondsuse väärtus.
- Trükkige konsoolile mõne muu teksti kõrvale struktureeritud liikme vanuse väärtus.
- Eduka käitamise korral peaks programm tagastama väärtuse.
- Põhifunktsiooni () lõpp.
Struktuuri viited
On võimalik luua osuti, mis osutab struktuurile. See on sarnane sellele, kuidas luuakse kohalikule andmetüübile (int, float, double) osutavad osutid. Pange tähele, et kursor C ++ salvestab mälu asukoha.
Näide 2:
#includeusing 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:
Siin on ekraanipilt koodist:
Koodi selgitus:
- Kaasake iostreami päisefail meie programmi, et selle funktsioone kasutada.
- Kaasake meie programmi standardne nimeruum, et kasutada selle klasse ilma seda kutsumata.
- Looge struktuur nimega Pikkus.
- Struktuuri pikkuse keha algus.
- Looge struktuurliige nimega meeter täisarvu andmetüübist.
- Looge struktuurliige, mille nimeks on täisarvu sentimeetrid.
- Struktuuri pikkuse keha lõpp.
- Helistage funktsioonile main ().
- Põhifunktsiooni () keha algus.
- Looge kursori muutuja * ptr ja tavaline muutuja l, mille tüüp on Pikkus.
- Salvestage muutuja l aadress meie kursori muutujasse.
- Kuva konsoolil teade, milles palutakse kasutajal sisestada muutuvate meetrite väärtus.
- Lugege kasutaja poolt klaviatuuri kaudu sisestatud väärtust. Liikmefunktsioonimõõturitele pääseb siin kursori muutuja abil.
- Kuva konsoolil teade, milles palutakse kasutajal sisestada muutuva sentimeetri väärtus.
- Lugege kasutaja poolt klaviatuuri kaudu sisestatud väärtust. Liikmefunktsiooni sentimeetritele pääseb siin kursori muutuja abil.
- Kasutajalt loetud väärtuste kuvamine konsoolil mõne muu teksti kõrval.
- Programm peab edukal täitmisel tagastama väärtuse.
- Põhifunktsiooni () keha lõpp.
Struktuur funktsiooni argumendina
Funktsioonile saate argumendina anda struktuuri. 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:
#includeusing 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< Väljund:
Siin on ekraanipilt koodist:
Koodi selgitus:
- Lisage iostreami päisefail meie faili. Seejärel kasutame selle funktsioone vigu saamata.
- Klasside kasutamiseks lisage meie programmi standardne nimeruum. Selle klasside kasutamiseks pole meil vaja nimeruumi helistada.
- Looge struktuur nimega Isik.
- Struktureeritud isiku keha algus.
- Looge struktureeritud isiku liige. Liikme nimi on kodakondsus ja selle tüüp on täisarv.
- Looge struktureeritud isiku liige. Liikme nimi on vanus ja tüüp on täisarv.
- Struktuuriga isiku keha lõpp.
- Looge funktsioon, mis võtab argumendiks struktuur Person, p.
- Helistage põhifunktsioonile. {Tähistab põhi () funktsiooni keha algust.
- Looge struktuur Person isik ja andke talle nimi p.
- Struktuuriliikme muutuja kodakondsusele pääsete juurde, kasutades struktuuri eksemplari p ja määrates sellele väärtuse 1.
- Struktuuriliikme muutuja vanusele pääsemiseks kasutage struktuuri eksemplari p ja määrake sellele väärtus 27.
- Kutsuge funktsiooni ja edastage sellele argumendina struktuur Person, p.
- Funktsioon peab edukal käivitamisel tagastama väärtuse.
- Põhifunktsiooni () keha lõpp.
- Looge funktsiooni keha.
- Funktsiooni keha algus.
- Juurdepääs struktureeritud liikme kodakondsuse väärtusele ja printimine konsoolile koos muu tekstiga.
- Juurdepääs struktuuriliikme vanuse väärtusele ja selle printimine konsoolile koos muu tekstiga.
- Funktsiooni keha lõpp.
C ++ struktuuri piiramine
Struktuuride piirangud on järgmised:
- Struktureeritud andmetüüpi ei saa käsitleda nagu sisseehitatud andmetüüpe.
- Operaatoreid nagu + - ja teisi ei saa struktuurimuutujate jaoks kasutada.
- Struktuurid ei toeta andmete peitmist. Struktuuri liikmetele pääseb juurde mis tahes funktsiooniga, olenemata selle ulatusest.
- Staatilisi liikmeid ei saa struktuuri kere sees deklareerida.
- Konstruktoreid ei saa struktuuri sisse luua.
Kokkuvõte:
- Struktuur on andmestruktuur, mis salvestab erinevat tüüpi andmeid.
- Kui massiiv salvestab sarnase tüübi andmeelemente, siis struktuur salvestab erinevat tüüpi andmeelemente.
- Struktuuri tuleks kasutada siis, kui eeldatakse, et andmeelemendid ei muuda väärtust.
- Struktuuri liikmetele pääseb juurde punkti (.) Operaatori abil.
- Peame looma struktuuri eksemplari.
- C ++ struktuuri loomiseks kasutame struktūr märksõna.
- Struktuurile osutavad kursorid luuakse sarnaselt tavalistele tüüpidele osutavate kursorite loomisele.
- Struktuuri saab funktsiooni argumendina edastada samamoodi nagu tavalisi funktsioone.