C++ Struktura s primjerom
โก Pametni saลพetak
Struktura u C++ je korisniฤki definirani tip podataka koji grupira elemente razliฤitih tipova podataka pod jednim imenom, omoguฤujuฤi jednoj varijabli da zajedno sadrลพi povezane vrijednosti poput imena osobe, drลพavljanstva i dobi.

U ฤemu je struktura C++?
STRUKTURA je C++ strukturu podataka koja se moลพe koristiti za zajedniฤko pohranjivanje elemenata razliฤitih tipova podataka. U C++, struktura je korisniฤki definirani tip podataka. Struktura stvara tip podataka za grupuping stavke razliฤitih tipova podataka pod jednim tipom 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, u buduฤnosti ฤete moลพda trebati 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:
Code Objaลกnjenje:
- 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:
Code Objaลกnjenje:
- 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:
Code Objaลกnjenje:
- 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.



