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.

  • ???? Razliฤite vrste podataka: Struktura grupira varijable razliฤitih tipova pod jednim korisniฤki definiranim imenom.
  • ๐Ÿ”‘ kljuฤna rijeฤ strukture: Definirajte strukturu kljuฤnom rijeฤi struct, a zatim navedite ฤlanove unutar vitiฤastih zagrada.
  • ๐Ÿงฑ Stvaranje instanci: Osoba koja piลกe p stvara strukturnu varijablu i alocira joj memoriju.
  • ๐ŸŽฏ Operator toฤke: Proฤitajte ili postavite bilo kojeg ฤlana kroz instancu, kao u p.age = 27.
  • โžก๏ธ Pokazivaฤi i funkcije: Struktura radi s pokazivaฤima i prenosi se funkciji kao obiฤan argument.
  • ๐Ÿค– AI pomoฤ‡: GitHub Copilot i drugi AI asistenti grade definicije struktura i pristup ฤlanova iz komentara.

C++ struct

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:

Pristup ฤlanovima strukture

Evo snimke zaslona koda:

Pristup ฤlanovima strukture

Code Objaลกnjenje:

  1. Ukljuฤite datoteku zaglavlja iostream u naลก program da biste koristili funkcije definirane u njoj.
  2. Ukljuฤite prostor imena std da biste koristili njegove klase bez pozivanja.
  3. Stvorite strukturu pod nazivom Osoba.
  4. Poฤetak tijela strukture.
  5. Stvorite ฤlan strukture pod nazivom drลพavljanstvo tipa cijeli broj.
  6. Stvorite ฤlan strukture pod nazivom age tipa integer.
  7. Kraj tijela strukture.
  8. Pozovite funkciju main(). Programsku logiku treba dodati unutar tijela ove funkcije.
  9. Stvorite instancu strukture Person i dajte joj ime p.
  10. Postavite vrijednost drลพavljanstva ฤlana strukture na 1.
  11. Postavite vrijednost starosti ฤlana strukture na 27.
  12. Ispiลกite vrijednost drลพavljanstva ฤlana strukture na konzoli uz neki drugi tekst.
  13. Ispiลกite vrijednost starosti ฤlana strukture na konzoli uz neki drugi tekst.
  14. Program bi trebao vratiti vrijednost ako se uspjeลกno izvodi.
  15. 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:

Pokazivaฤi na strukturu

Evo snimke zaslona koda:

Pokazivaฤi na strukturu

Code Objaลกnjenje:

  1. Ukljuฤite datoteku zaglavlja iostream u naลก program kako biste koristili njegove funkcije.
  2. Ukljuฤite prostor imena std u naลก program kako biste koristili njegove klase bez pozivanja.
  3. Stvorite strukturu pod nazivom Length.
  4. Poฤetak tijela strukture Duลพina.
  5. Stvorite ฤlan strukture pod nazivom metri tipa podataka cijelog broja.
  6. Stvorite ฤlan strukture pod nazivom centimetri tipa cijeli broj.
  7. Kraj tijela konstrukcije Duljina.
  8. Pozovite funkciju main().
  9. Poฤetak tijela funkcije main().
  10. Kreirajte pokazivaฤku varijablu *ptr i normalnu varijablu l tipa Length.
  11. Pohranite adresu varijable l u naลก pokazivaฤka varijabla.
  12. Prikaลพite poruku na konzoli, traลพeฤ‡i od korisnika da unese vrijednost za varijabilne mjeraฤe.
  13. Oฤitajte vrijednost koju je korisnik unio putem tipkovnice. Ovdje se pristupa mjeraฤima funkcije ฤlana pomoฤ‡u varijable pokazivaฤa.
  14. Prikaลพite poruku na konzoli, traลพeฤ‡i od korisnika da unese vrijednost za varijabilne centimetre.
  15. Oฤitajte vrijednost koju je korisnik unio putem tipkovnice. Centimetrima funkcije ฤlana ovdje se pristupa pomoฤ‡u varijable pokazivaฤa.
  16. Prikaz vrijednosti proฤitanih od korisnika na konzoli uz neki drugi tekst.
  17. Program mora vratiti vrijednost nakon uspjeลกnog izvoฤ‘enja.
  18. 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:

Struktura kao argument funkcije

Evo snimke zaslona koda:

Struktura kao argument funkcije

Code Objaลกnjenje:

  1. Ukljuฤite iostream datoteku zaglavlja u naลกu datoteku. Zatim ฤ‡emo koristiti njegove funkcije bez dobivanja pogreลกaka.
  2. Ukljuฤite prostor imena std u naลก program da biste koristili njegove klase. Neฤ‡emo morati pozivati โ€‹โ€‹imenski prostor da bismo koristili njegove klase.
  3. Stvorite strukturu pod nazivom Osoba.
  4. Poฤetak tijela strukture Osoba.
  5. Stvorite ฤlana strukture Osoba. ฤŒlan se naziva drลพavljanstvo i ima cijeli broj.
  6. Stvorite ฤlana strukture Osoba. ฤŒlan se zove age i ima cijeli broj.
  7. Kraj tijela strukture Osoba.
  8. Napravite funkciju koja uzima instancu struct Person, p, kao argument.
  9. Pozovite glavnu funkciju. { oznaฤava poฤetak tijela funkcije main().
  10. Stvorite instancu struct Person i dajte joj ime p.
  11. Pristupite varijabli struct member membersship koristeฤ‡i instancu struct, p, i dodjeljivanjem joj vrijednosti 1.
  12. Pristupite varijabli ฤlana strukture age koristeฤ‡i instancu strukture, p, i dodijelite joj vrijednost 27.
  13. Pozovite funkciju i proslijedite joj instancu strukture Osoba, p, kao argument.
  14. Funkcija mora vratiti vrijednost nakon uspjeลกnog izvoฤ‘enja.
  15. Kraj tijela funkcije main().
  16. Napravite tijelo funkcije.
  17. Poฤetak tijela funkcije.
  18. Pristupite vrijednosti drลพavljanstva ฤlana strukture i ispiลกite je na konzoli uz ostali tekst.
  19. Pristupite vrijednosti starosti ฤlana strukture i ispiลกite je na konzoli uz ostali tekst.
  20. 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.

Pitanja i odgovori

In C++ Struktura i klasa su gotovo identiฤne. Jedina prava razlika je zadani pristup: ฤlanovi strukture su prema zadanim postavkama javni, dok su ฤlanovi klase privatni. Obje podrลพavaju funkcije ฤlanova, konstruktore i nasljeฤ‘ivanje.

Struktura AC sadrลพi samo podatke i morate napisati strukturu prije svake deklaracije varijable. A C++ Struktura moลพe takoฤ‘er ukljuฤivati โ€‹โ€‹funkcije ฤlanice, konstruktore i specifikatore pristupa, a kljuฤna rijeฤ struct je opcionalna pri deklariranju varijabli.

Deklarirajte strukturu, a zatim definirajte njezin niz, na primjer Person people[3]. Svaki element je potpuna struktura, a ฤlanovima pristupate s people[0].age. Nizovi struktura pohranjuju mnogo zapisa istog tipa zajedno.

Ugnijeลพฤ‘ena struktura je struktura deklarirana kao ฤlan unutar druge strukture. Grupira povezane podpodatke, kao ลกto je struktura Date smjeลกtena unutar strukture Employee. Do unutarnjih ฤlanova dolazi se ulanฤavanjem operatora toฤka.

Veliฤina je otprilike zbroj ฤlanova, plus ispuna koju kompajler dodaje za poravnanje, tako da sizeof moลพe premaลกiti sirovi ukupan broj. Funkcije ฤlanice ne dodaju niลกta. Sortiranje ฤlanova po veliฤini smanjuje neiskoriลกteni ispuna.

Koristite operator strelice kada drลพite pokazivaฤ na strukturu. Umjesto (*ptr).age, preฤac ptr->age ฤita isti ฤlan. Operator toฤke radi na izravnoj instanci, a ne na pokazivaฤu.

Da. Pomoฤ‡nici za kodiranje s umjetnom inteligencijom pretvaraju kratki upit ili komentar u potpuni C++ struktura, ukljuฤujuฤ‡i ฤlanove, konstruktore i pristup poljima. Uvijek pregledajte generirane tipove podataka i poravnanje, buduฤ‡i da umjetna inteligencija moลพe propustiti zahtjeve specifiฤne za projekt.

Da. GitHub kopilot predlaลพe definicije struktura, varijable ฤlanova i pristup toฤkama ili strelicama dok tipkate u ureฤ‘ivaฤu. Dobro se nosi s ponavljajuฤ‡im predloลกcima, iako biste ipak trebali provjeriti tipove, ispune i logiku prije kompajliranja.

Saลพmite ovu objavu uz: