C++-structuur met voorbeeld

Wat is een structuur in C++?

A STRUCT is een C++-gegevensstructuur die kan worden gebruikt om elementen van verschillende gegevenstypen samen op te slaan. In C++ is een structuur een door de gebruiker gedefinieerd gegevenstype. De structuur creëert een gegevenstype voor het groeperen van items van verschillende gegevenstypen onder één gegevenstype.

Bijvoorbeeld:

Stel dat u informatie over iemand, zijn naam, staatsburgerschap en leeftijd moet opslaan. U kunt variabelen zoals naam, staatsburgerschap en leeftijd maken om de gegevens afzonderlijk op te slaan.

Het kan echter zijn dat u in de toekomst informatie over veel personen moet opslaan. Het betekent dat er variabelen voor verschillende individuen worden gecreëerd. Bijvoorbeeld naam1, staatsburgerschap1, leeftijd1 etc. Om dit te voorkomen, is het beter om een ​​structuur te maken.

Wanneer gebruik je een structuur?

Hier zijn enkele redenen waarom structuur in C++ wordt gebruikt.

  • Gebruik een struct wanneer u elementen van verschillende gegevenstypen onder één gegevenstype wilt opslaan.
  • C++-structuren zijn een waardetype in plaats van een referentietype. Gebruik een struct als u niet van plan bent uw gegevens na het aanmaken te wijzigen.

C++ structuurinitialisatie

Om een ​​C++-structuur te creëren, gebruiken we het trefwoord struct, gevolgd door een identificatie. De identifier wordt de naam van de struct. Hier is de syntaxis voor het maken van een C++-structuur:

Syntax:

struct struct_name  
{  
     // struct members
}   

In de bovenstaande syntaxis hebben we het sleutelwoord struct gebruikt. De struct_name is de naam van de structuur.

De struct-leden worden tussen accolades toegevoegd. Deze leden behoren waarschijnlijk tot verschillende gegevenstypen.

Bijvoorbeeld:

struct Person  
{  
    char name[30];  
     int citizenship;  
     int age;  
}  

In het bovenstaande voorbeeld is Persoon een structuur met drie leden. De leden omvatten naam, staatsburgerschap en leeftijd. Eén lid is van het gegevenstype char, terwijl de overige twee gehele getallen zijn. Wanneer een structuur wordt gemaakt, wordt er geen geheugen toegewezen. Geheugen wordt alleen toegewezen nadat een variabele aan de structuur is toegevoegd.

Structuurinstanties maken

In het bovenstaande voorbeeld hebben we een structuur gemaakt met de naam Person. We kunnen als volgt een struct-variabele maken:

Person p;

De p is een structvariabele van het type Persoon. We kunnen deze variabele gebruiken om toegang te krijgen tot de leden van de struct.

Toegang tot structuurleden

Om toegang te krijgen tot de struct-leden gebruiken we de instantie van de struct en de punt-operator (.). Om bijvoorbeeld toegang te krijgen tot de lidmaatschapsleeftijd van struct Person:

p.age = 27;

We hebben toegang gekregen tot de ledenleeftijd van struct Person met behulp van de instantie van de struct, p. Vervolgens hebben wij de waarde van de ledenleeftijd op 27 gezet.

Voorbeeld 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;
}

Output:

Toegang tot structuurleden

Hier is een screenshot van de code:

Toegang tot structuurleden

Code Verklaring:

  1. Neem het iostream-headerbestand op in ons programma om de daarin gedefinieerde functies te gebruiken.
  2. Neem de std-naamruimte op om de klassen ervan te gebruiken zonder deze aan te roepen.
  3. Maak een structuur met de naam Persoon.
  4. Het begin van het struct-lichaam.
  5. Maak een struct-lid met de naam burgerschap van het type geheel getal.
  6. Maak een struct-lid met de naam age van het type integer.
  7. Einde van de structuurtekst.
  8. Roep de functie main() aan. De programmalogica moet worden toegevoegd aan de hoofdtekst van deze functie.
  9. Maak een instance van de struct Person en geef deze de naam p.
  10. Stel de waarde van het staatsburgerschap van struct-leden in op 1.
  11. Stel de waarde van de leeftijd van het structuurlid in op 27.
  12. Druk de waarde van het staatsburgerschap van het struct-lid af op de console, naast een andere tekst.
  13. Druk de waarde van de leeftijd van het struct-lid af op de console, samen met wat andere tekst.
  14. Het programma zou een waarde moeten retourneren als het succesvol wordt uitgevoerd.
  15. Einde van de functie main().

Wijzers naar structuur

Het is mogelijk om een ​​pointer te maken die naar een structuur verwijst. Het is vergelijkbaar met hoe verwijzingen naar native gegevenstypen zoals int, float, double, enz. worden gemaakt. Merk op dat een pointer in C++ een geheugenlocatie opslaat.

Voorbeeld 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;
}

Output:

Wijzers naar structuur

Hier is een screenshot van de code:

Wijzers naar structuur

Code Verklaring:

  1. Neem het iostream-headerbestand op in ons programma om de functies ervan te kunnen gebruiken.
  2. Neem de std-naamruimte op in ons programma om de klassen ervan te gebruiken zonder deze aan te roepen.
  3. Maak een structuur met de naam Lengte.
  4. Begin van het lichaam van de structuur Lengte.
  5. Maak een struct-lid met de naam meters van het gegevenstype geheel getal.
  6. Maak een struct-lid met de naam centimeters van het type geheel getal.
  7. Einde van het lichaam van de structuur Lengte.
  8. Roep de functie main() aan.
  9. Begin van de hoofdtekst van de functie main().
  10. Maak een pointervariabele *ptr en een normale variabele l van het type Lengte.
  11. Sla het adres van variabele l op in our aanwijzervariabele.
  12. Geef een bericht op de console weer waarin de gebruiker wordt gevraagd de waarde voor variabele meters in te voeren.
  13. Lees de door de gebruiker ingevoerde waarde via het toetsenbord. De lidfunctiemeters zijn hier toegankelijk via de pointervariabele.
  14. Geef een bericht weer op de console, waarin de gebruiker wordt gevraagd de waarde voor variabele centimeters in te voeren.
  15. Lees de door de gebruiker ingevoerde waarde via het toetsenbord. De lidfunctie centimeters wordt hier benaderd met behulp van de pointervariabele.
  16. Geef de waarden weer die van de gebruiker zijn gelezen op de console, naast andere tekst.
  17. Het programma moet bij succesvolle uitvoering een waarde retourneren.
  18. Einde van de hoofdtekst van de functie main().

Structuur als functieargument

Je kunt een struct als argument aan een functie doorgeven. Dit gebeurt op dezelfde manier als het doorgeven van een normaal argument. De struct-variabelen kunnen ook aan een functie worden doorgegeven. Een goed voorbeeld is wanneer u de waarden van struct-leden moet weergeven. Laten we dit demonstreren:

Voorbeeld 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;
}

Output:

Structuur als functieargument

Hier is een screenshot van de code:

Structuur als functieargument

Code Verklaring:

  1. Neem het iostream-headerbestand op in ons bestand. We zullen dan de functies ervan gebruiken zonder fouten te krijgen.
  2. Neem de std-naamruimte op in ons programma om de klassen ervan te gebruiken. We hoeven de naamruimte niet aan te roepen om de klassen ervan te gebruiken.
  3. Maak een structuur met de naam Persoon.
  4. Begin van de hoofdtekst van de struct Persoon.
  5. Maak een lid van struct Person. Het lid heet staatsburgerschap en is van het type geheel getal.
  6. Maak een lid van struct Person. Het lid heet leeftijd en is van het type geheel getal.
  7. Einde van het lichaam van struct Person.
  8. Maak een functie die de instantie van struct Person, p, als argument gebruikt.
  9. Roep de hoofdfunctie op. De { markeert het begin van de hoofdtekst van de functie main().
  10. Maak een instantie van struct Person en geef deze de naam p.
  11. Krijg toegang tot de struct-lidvariabele burgerschap met behulp van de instantie van de struct, p, en geef deze de waarde 1.
  12. Krijg toegang tot de struct-lidvariabele leeftijd met behulp van de instantie van de struct, p, en wijs hieraan de waarde 27 toe.
  13. Roep de functie aan en geef de instantie van de struct Person, p, als argument door.
  14. De functie moet bij succesvolle uitvoering een waarde retourneren.
  15. Einde van de hoofdtekst van de functie main().
  16. Maak de hoofdtekst van de functie.
  17. Het begin van de hoofdtekst van de functie.
  18. Krijg toegang tot de burgerschapswaarde van het struct-lid en druk deze samen met andere tekst af op de console.
  19. Krijg toegang tot de leeftijdswaarde van het struct-lid en druk deze samen met andere tekst af op de console.
  20. Einde van de functietekst.

Beperking van een C++-structuur

De following zijn de beperkingen van structuren:

  • Het struct-gegevenstype kan niet worden behandeld als ingebouwde gegevenstypen.
  • Operators zoals + - en andere kunnen niet worden gebruikt structuurvariabelen.
  • Structuren ondersteunen het verbergen van gegevens niet. De leden van een structuur zijn toegankelijk voor elke functie, ongeacht de reikwijdte ervan.
  • Statische leden kunnen niet binnen het structuurlichaam worden gedeclareerd.
  • Constructors kunnen niet binnen een constructie worden gemaakt.

Samengevat

  • Een struct is een datastructuur die data-elementen opslaat die tot verschillende typen behoren.
  • Terwijl een array data-elementen van een vergelijkbaar type opslaat, slaat een struct data-elementen van verschillende typen op.
  • Er moet een struct worden gebruikt als niet wordt verwacht dat de gegevenselementen van waarde zullen veranderen.
  • De leden van een struct zijn toegankelijk via de puntoperator (.).
  • We moeten een instantie van de struct maken.
  • Om een ​​C++-structuur te maken, gebruiken we het trefwoord struct.
  • Pointers die naar een structuur verwijzen, worden op dezelfde manier gemaakt als pointers die naar reguliere typen verwijzen.
  • Een struct kan als argument aan een functie worden doorgegeven op dezelfde manier als gewone functies.