Čo je Struct v C ++?
Struct je C ++ dátová štruktúra, ktorá môže byť použitá na uloženie spoločne prvky rôznych typov dát. V C ++ je štruktúra používateľom definovaný dátový typ. Štruktúra vytvára dátový typ na zoskupovanie položiek rôznych dátových typov pod jeden dátový typ.
Napríklad:
Predpokladajme, že musíte ukladať informácie o niekom, jeho mene, občianstve a veku. Môžete vytvoriť premenné, ako sú meno, občianstvo a vek, aby ste mohli údaje ukladať osobitne.
Možno však budete možno musieť v budúcnosti ukladať informácie o mnohých osobách. Znamená to, že sa vytvoria premenné pre rôznych jednotlivcov. Napríklad meno1, občianstvo1, vek1 atď. Aby ste tomu zabránili, je lepšie vytvoriť štruktúru.
V tomto výučbe pre C ++ sa dozviete:
- Čo je Struct v C ++?
- Kedy použiť štruktúru?
- Inicializácia štruktúry v C ++
- Vytváranie štruktúrnych inštancií
- Prístup k členom štruktúry
- Ukazovatele na štruktúru
- Argument štruktúry ako funkcie
- Obmedzenie štruktúry C ++
Kedy použiť štruktúru?
Tu je niekoľko dôvodov, prečo používať štruktúru v C ++.
- Štruktúru použite, keď potrebujete uložiť prvky rôznych dátových typov pod jeden dátový typ.
- Štruktúry C ++ sú skôr hodnotovým typom ako referenčným typom. Ak nemáte v úmysle po vytvorení upraviť svoje údaje, použite štruktúru.
Inicializácia štruktúry v C ++
Na vytvorenie štruktúry C ++ používame kľúčové slovo struct, za ktorým nasleduje identifikátor. Identifikátor sa stáva názvom štruktúry. Tu je syntax pre vytvorenie štruktúry C ++:
Syntax:
struct struct_name{// struct members}
Vo vyššie uvedenej syntaxe sme použili kľúčové slovo struct. Struct_name je názov štruktúry.
Členovia štruktúry sa pridávajú do zložených zátvoriek. Títo členovia pravdepodobne patria do rôznych typov údajov.
Napríklad:
struct Person{char name[30];int citizenship;int age;}
Vo vyššie uvedenom príklade je osoba štruktúra s tromi členmi. Členmi sú meno, občianstvo a vek. Jeden člen je char dátového typu, zatiaľ čo zvyšné 2 sú celé čísla, keď sa vytvorí štruktúra, pamäť sa nepridelí. Pamäť je pridelená až po pridaní premennej do štruktúry.
Vytváranie štruktúrnych inštancií
Vo vyššie uvedenom príklade sme vytvorili štruktúru s názvom Osoba. Štruktúrnu premennú môžeme vytvoriť nasledovne:
Person p;
P je štruktúrna premenná typu Osoba. Túto premennú môžeme použiť na prístup k členom štruktúry.
Prístup k členom štruktúry
Na prístup k členom štruktúry používame inštanciu operátora struct a bodka (.). Napríklad pre prístup k veku člena štruktúrovanej osoby:
p.age = 27;
Prístup k veku člena štruktúry Person sme získali pomocou inštancie štruktúry, s. Potom sme nastavili hodnotu veku člena na 27.
Príklad 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ýkon:
Tu je snímka obrazovky s kódom:
Vysvetlenie kódu:
- Zahrňte súbor hlavičky iostream do nášho programu, aby ste mohli používať funkcie v ňom definované.
- Ak chcete používať svoje triedy bez toho, aby ste ich volali, zahrňte štandardný menný priestor.
- Vytvorte štruktúru s názvom Osoba.
- Začiatok tela štruktúry.
- Vytvorte člena štruktúry s názvom občianstvo typu integer.
- Vytvorte člena štruktúry s názvom age of type integer.
- Koniec tela štruktúry.
- Zavolajte funkciu main (). Logika programu by mala byť pridaná do tela tejto funkcie.
- Vytvorte inštanciu štruktúry Osoba a pomenujte ju str.
- Nastavte hodnotu občianstva člena struct na 1.
- Nastavte hodnotu veku člena štruktúry na 27.
- Vytlačte hodnotu občianstva člena štruktúry na konzolu spolu s ďalším textom.
- Vytlačte hodnotu veku člena štruktúry na konzole spolu s ďalším textom.
- Program by mal vrátiť hodnotu, ak beží úspešne.
- Koniec hlavnej funkcie ().
Ukazovatele na štruktúru
Je možné vytvoriť ukazovateľ, ktorý ukazuje na štruktúru. Je to podobné ako pri vytváraní ukazovateľov smerujúcich na natívne dátové typy ako int, float, double atď. Upozorňujeme, že ukazovateľ v C ++ uloží miesto v pamäti.
Príklad 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ýkon:
Tu je snímka obrazovky s kódom:
Vysvetlenie kódu:
- Zahrňte súbor hlavičky iostream do nášho programu, aby ste mohli využívať jeho funkcie.
- Zahrňte do nášho programu std namespace, aby ste mohli používať jeho triedy bez toho, aby ste ich volali.
- Vytvorte štruktúru s názvom Dĺžka.
- Začiatok tela štruktúry Dĺžka.
- Vytvorte člena štruktúry s názvom metre celočíselného dátového typu.
- Vytvorte člena štruktúry s názvom centimetre typu integer.
- Koniec tela štruktúry Dĺžka.
- Zavolajte funkciu main ().
- Začiatok tela hlavnej () funkcie.
- Vytvorte ukazovateľovú premennú * ptr a normálnu premennú l typu Length.
- Uložte adresu premennej l do našej premennej ukazovateľa.
- Zobrazte správu na konzole so žiadosťou o zadanie hodnoty pre variabilné merače.
- Prečítajte si hodnotu zadanú používateľom pomocou klávesnice. K meračom členských funkcií sa tu pristupuje pomocou premennej ukazovateľ.
- Zobrazte na konzole správu so žiadosťou o zadanie hodnoty pre rôzne centimetre.
- Prečítajte si hodnotu zadanú používateľom pomocou klávesnice. K centimetrom členských funkcií sa tu pristupuje pomocou premennej ukazovateľ.
- Zobrazí hodnoty načítané od používateľa na konzole spolu s ďalším textom.
- Po úspešnom vykonaní musí program vrátiť hodnotu.
- Koniec tela hlavnej () funkcie.
Argument štruktúry ako funkcie
Štruktúru môžete odovzdať funkcii ako argument. Toto sa deje rovnakým spôsobom ako pri podaní normálneho argumentu. Štruktúrne premenné je možné odovzdať aj funkcii. Dobrým príkladom je, keď potrebujete zobraziť hodnoty členov štruktúry. Ukážme to:
Príklad 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ýkon:
Tu je snímka obrazovky s kódom:
Vysvetlenie kódu:
- Zahrňte súbor hlavičky iostream do nášho súboru. Potom budeme používať jeho funkcie bez toho, aby sme dostali chyby.
- Zahrňte do nášho programu std namespace, aby ste mohli používať jeho triedy. Na použitie jeho tried nebudeme musieť volať menný priestor.
- Vytvorte štruktúru s názvom Osoba.
- Začiatok tela štruktúry Osoba.
- Vytvorte člena štruktúry Person. Člen má meno občianstvo a má celé číslo.
- Vytvorte člena štruktúry Person. Člen má meno age a je typu integer.
- Koniec tela stavby Osoba.
- Vytvorte funkciu, ktorá ako argument vezme inštanciu štruktúry Person, p.
- Zavolajte hlavnú funkciu. {Označuje začiatok tela funkcie main ().
- Vytvorte inštanciu štruktúry Osoba a pomenujte ju str.
- Pristúpte k premennej člena občianstva štruktúrovanej inštancie štruktúry p a priraďte jej hodnotu 1.
- Pristúpte k premennej age člena member pomocou inštancie struct p a priraďte jej hodnotu 27.
- Zavolajte funkciu a odovzdajte jej ako argument inštanciu štruktúry Person, p.
- Po úspešnom vykonaní musí funkcia vrátiť hodnotu.
- Koniec tela hlavnej () funkcie.
- Vytvorte telo funkcie.
- Začiatok tela funkcie.
- Získajte prístup k hodnote občianstva člena štruktúry a jej vytlačeniu na konzole spolu s ďalším textom.
- Prístup k vekovej hodnote člena štruktúry a jej vytlačenie na konzole spolu s ďalším textom.
- Koniec funkčného tela.
Obmedzenie štruktúry C ++
Nasledujú obmedzenia štruktúr:
- S dátovým typom struct nemožno zaobchádzať ako so zabudovanými dátovými typmi.
- Operátory ako + - a ďalšie nie je možné použiť na premenné štruktúry.
- Štruktúry nepodporujú skrývanie údajov. K členom štruktúry je prístupný z ktorejkoľvek funkcie bez ohľadu na jej rozsah.
- Statické prvky nemôžu byť deklarované vo vnútri tela konštrukcie.
- V konštrukcii nemožno vytvoriť konštruktory.
Zhrnutie:
- Štruktúra je dátová štruktúra, ktorá uchováva dátové prvky patriace k rôznym typom.
- Zatiaľ čo pole uchováva dátové prvky podobného typu, štruktúra ukladá dátové prvky rôznych typov.
- Štruktúra by sa mala použiť, ak sa neočakáva, že dátové prvky zmenia hodnotu.
- K členom štruktúry sa pristupuje pomocou operátora bodka (.).
- Musíme vytvoriť inštanciu štruktúry.
- Na vytvorenie štruktúry C ++ používame kľúčové slovo struct.
- Ukazovatele smerujúce na štruktúru sa vytvárajú podobne, ako sa vytvárajú ukazovatele ukazujúce na bežné typy.
- Štruktúru je možné odovzdať ako argument funkcii rovnakým spôsobom, ako sa odovzdávajú bežné funkcie.