C++ Struktura s primjerom
U čemu je struktura C++?
A STRUKTIRATI je C++ strukturu podataka koja se može koristiti za zajedničko pohranjivanje elemenata različitih tipova podataka. U C++, struktura je korisnički definiran tip podataka. Struktura stvara tip podataka za grupiranje stavki različitih tipova podataka pod jedan tip podataka.
Na primjer:
Pretpostavimo da trebate pohraniti informacije o nekome, njegovo ime, državljanstvo i dob. Možete stvoriti varijable kao što su ime, državljanstvo i dob za odvojeno pohranjivanje podataka.
Međutim, možda ćete u budućnosti morati pohraniti podatke o mnogim osobama. To znači da će se stvoriti varijable za različite pojedince. Na primjer, ime1, državljanstvo1, dob1 itd. Da biste to izbjegli, bolje je stvoriti strukturu.
Kada koristiti strukturu?
Evo nekoliko razloga za korištenje strukture C++.
- Koristite strukturu kada trebate pohraniti elemente različitih tipova podataka pod jedan tip podataka.
- C++ strukture su vrijednosni tip, a ne referentni tip. Upotrijebite strukturu ako ne namjeravate mijenjati svoje podatke nakon izrade.
C++ Inicijalizacija strukture
Da biste stvorili C++ strukturu, koristimo ključnu riječ struct, iza koje slijedi identifikator. Identifikator postaje naziv strukture. Ovdje je sintaksa za stvaranje a C++ struktura:
Sintaksa:
struct struct_name { // struct members }
U gornjoj sintaksi upotrijebili smo ključnu riječ struct. struct_name je naziv strukture.
Članovi strukture dodaju se unutar vitičastih zagrada. Ovi članovi vjerojatno pripadaju različitim tipovima podataka.
Na primjer:
struct Person { char name[30]; int citizenship; int age; }
U gornjem primjeru, Osoba je struktura s tri člana. Članovi uključuju ime, državljanstvo i dob. Jedan član je tipa podataka char, dok su preostala 2 cijeli brojevi kada se kreira struktura, memorija se ne dodjeljuje. Memorija se dodjeljuje tek nakon što se varijabla doda strukturi.
Stvaranje instanci strukture
U gornjem primjeru, stvorili smo strukturu pod imenom Osoba. Strukturnu varijablu možemo kreirati na sljedeći način:
Person p;
P je strukturna varijabla tipa Osoba. Ovu varijablu možemo koristiti za pristup članovima strukture.
Pristup članovima strukture
Za pristup članovima strukture koristimo instancu strukture i operator točka (.). Na primjer, za pristup dobi člana struct Person:
p.age = 27;
Pristupili smo članskoj dobi strukture Person koristeći instancu strukture, str. Zatim smo postavili vrijednost dobi člana na 27.
Primjer 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; }
Izlaz:
Evo snimke zaslona koda:
Objašnjenje koda:
- Uključite datoteku zaglavlja iostream u naš program da biste koristili funkcije definirane u njoj.
- Uključite prostor imena std da biste koristili njegove klase bez pozivanja.
- Stvorite strukturu pod nazivom Osoba.
- Početak tijela strukture.
- Stvorite član strukture pod nazivom državljanstvo tipa cijeli broj.
- Stvorite član strukture pod nazivom age tipa integer.
- Kraj tijela strukture.
- Pozovite funkciju main(). Programsku logiku treba dodati unutar tijela ove funkcije.
- Stvorite instancu strukture Person i dajte joj ime p.
- Postavite vrijednost državljanstva člana strukture na 1.
- Postavite vrijednost starosti člana strukture na 27.
- Ispišite vrijednost državljanstva člana strukture na konzoli uz neki drugi tekst.
- Ispišite vrijednost starosti člana strukture na konzoli uz neki drugi tekst.
- Program bi trebao vratiti vrijednost ako se uspješno izvodi.
- Kraj funkcije main().
Pokazivači na strukturu
Moguće je stvoriti pokazivač koji pokazuje na strukturu. To je slično načinu na koji se stvaraju pokazivači koji pokazuju na izvorne tipove podataka kao što su int, float, double itd. Imajte na umu da pokazivač u C++ će pohraniti memorijsku lokaciju.
Primjer 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; }
Izlaz:
Evo snimke zaslona koda:
Objašnjenje koda:
- Uključite datoteku zaglavlja iostream u naš program kako biste koristili njegove funkcije.
- Uključite prostor imena std u naš program kako biste koristili njegove klase bez pozivanja.
- Stvorite strukturu pod nazivom Length.
- Početak tijela strukture Dužina.
- Stvorite član strukture pod nazivom metri tipa podataka cijelog broja.
- Stvorite član strukture pod nazivom centimetri tipa cijeli broj.
- Kraj tijela konstrukcije Duljina.
- Pozovite funkciju main().
- Početak tijela funkcije main().
- Kreirajte pokazivačku varijablu *ptr i normalnu varijablu l tipa Length.
- Pohranite adresu varijable l u naš pokazivačka varijabla.
- Prikažite poruku na konzoli, tražeći od korisnika da unese vrijednost za varijabilne mjerače.
- Očitajte vrijednost koju je korisnik unio putem tipkovnice. Ovdje se pristupa mjeračima funkcije člana pomoću varijable pokazivača.
- Prikažite poruku na konzoli, tražeći od korisnika da unese vrijednost za varijabilne centimetre.
- Očitajte vrijednost koju je korisnik unio putem tipkovnice. Centimetrima funkcije člana ovdje se pristupa pomoću varijable pokazivača.
- Prikaz vrijednosti pročitanih od korisnika na konzoli uz neki drugi tekst.
- Program mora vratiti vrijednost nakon uspješnog izvođenja.
- Kraj tijela funkcije main().
Struktura kao argument funkcije
Strukturu možete proslijediti funkciji kao argument. Ovo se radi na isti način kao prosljeđivanje normalnog argumenta. Strukturne varijable također se mogu proslijediti funkciji. Dobar primjer je kada trebate prikazati vrijednosti članova strukture. Hajde da demonstriramo ovo:
Primjer 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; }
Izlaz:
Evo snimke zaslona koda:
Objašnjenje koda:
- Uključite iostream datoteku zaglavlja u našu datoteku. Zatim ćemo koristiti njegove funkcije bez dobivanja pogrešaka.
- Uključite prostor imena std u naš program da biste koristili njegove klase. Nećemo morati pozivati imenski prostor da bismo koristili njegove klase.
- Stvorite strukturu pod nazivom Osoba.
- Početak tijela strukture Osoba.
- Stvorite člana strukture Osoba. Član se naziva državljanstvo i ima cijeli broj.
- Stvorite člana strukture Osoba. Član se zove age i ima cijeli broj.
- Kraj tijela strukture Osoba.
- Napravite funkciju koja uzima instancu struct Person, p, kao argument.
- Pozovite glavnu funkciju. { označava početak tijela funkcije main().
- Stvorite instancu struct Person i dajte joj ime p.
- Pristupite varijabli struct member membersship koristeći instancu struct, p, i dodjeljivanjem joj vrijednosti 1.
- Pristupite varijabli člana strukture age koristeći instancu strukture, p, i dodijelite joj vrijednost 27.
- Pozovite funkciju i proslijedite joj instancu strukture Osoba, p, kao argument.
- Funkcija mora vratiti vrijednost nakon uspješnog izvođenja.
- Kraj tijela funkcije main().
- Napravite tijelo funkcije.
- Početak tijela funkcije.
- Pristupite vrijednosti državljanstva člana strukture i ispišite je na konzoli uz ostali tekst.
- Pristupite vrijednosti starosti člana strukture i ispišite je na konzoli uz ostali tekst.
- Kraj tijela funkcije.
Ograničenje a C++ struktura
Sljedeća su ograničenja struktura:
- Tip podataka struct ne može se tretirati kao ugrađeni tip podataka.
- Operatorovima poput + -, a drugi se ne mogu koristiti na varijable strukture.
- Strukture ne podržavaju skrivanje podataka. Članovima strukture može se pristupiti bilo kojom funkcijom bez obzira na njezin opseg.
- Statički članovi ne mogu se deklarirati unutar tijela strukture.
- Konstruktori se ne mogu kreirati unutar strukture.
Rezime
- Struktura je struktura podataka koja pohranjuje elemente podataka koji pripadaju različitim tipovima.
- Dok niz pohranjuje podatkovne elemente slične vrste, struktura pohranjuje podatkovne elemente različitih vrsta.
- Strukturu treba koristiti kada se ne očekuje da elementi podataka mijenjaju vrijednost.
- Članovima strukture pristupa se pomoću operatora točka (.).
- Moramo stvoriti instancu strukture.
- Da biste stvorili C++ struct, koristimo ključnu riječ struct.
- Pokazivači koji pokazuju na strukturu stvaraju se slično kao što se stvaraju pokazivači koji pokazuju na regularne tipove.
- Struktura se može proslijediti kao argument funkciji na isti način na koji se prosljeđuju obične funkcije.