C++ Structs Uitgelegd met een Praktisch Voorbeeld
Wat is een Struct in C++?
Een STRUCT is een C++‑datastructuur die gebruikt kan worden om elementen van verschillende datatypes samen op te slaan. In C++ is een structuur een user‑defined datatype. De structuur creëert een datatype voor het groeperen van items van verschillende datatypes onder één datatype.
Bijvoorbeeld:
Stel je moet informatie opslaan over iemand: hun naam, nationaliteit en leeftijd. Je kunt variabelen als name, citizenship en age aanmaken om de data apart op te slaan.
Toch moet je misschien in de toekomst informatie over veel personen opslaan. Dat betekent variabelen voor verschillende individuen: name1, citizenship1, age1, etc. Om dit te vermijden, is het beter om een struct te creëren.
In deze C++ tutorial leer je:
- Wat is een Struct in C++?
- Wanneer een Structuur gebruiken?
- C++ Struct Initialisatie
- Struct Instances Creëren
- Struct Members Benaderen
- Pointers naar Structuur
- Struct als Functie‑Argument
- Beperking van een C++ Structuur
Wanneer een Structuur Gebruiken?
Hier zijn enkele redenen om een structuur in C++ te gebruiken:
- Gebruik een struct wanneer je elementen van verschillende datatypes onder één datatype moet opslaan.
- C++ structs zijn een value‑type in plaats van een reference‑type. Gebruik een struct als je niet van plan bent je data na creatie te wijzigen.
C++ Struct Initialisatie
Om een C++ structuur te maken, gebruiken we het struct-keyword, gevolgd door een identificator. De identificator wordt de naam van de struct. Hier is de syntaxis voor het maken van een C++ struct:
Syntaxis:
struct struct_naam { // struct members }
In de bovenstaande syntaxis hebben we het struct-keyword gebruikt. De struct_naam is de naam van de structuur.
De struct‑leden worden binnen accolades toegevoegd. Deze leden horen waarschijnlijk tot verschillende datatypes.
Bijvoorbeeld:
struct Person {
char name[30];
int citizenship;
int age;
}
In het bovenstaande voorbeeld is Person een structuur met drie leden. De leden zijn name, citizenship en age. Een lid is van char‑datatype, de overige twee zijn integers. Wanneer een structuur wordt aangemaakt, wordt geen geheugen toegewezen. Geheugen wordt pas toegekend nadat een variabele aan de struct wordt toegevoegd.
Struct Instances Creëren
In het bovenstaande voorbeeld hebben we een struct genaamd Person gemaakt. We kunnen een struct‑variabele als volgt maken:
Person p;
De p is een struct‑variabele van type Person. We kunnen deze variabele gebruiken om de leden van de struct te benaderen.
Struct Members Benaderen
Om de struct‑leden te benaderen, gebruiken we de instantie van de struct en de punt‑operator (.). Bijvoorbeeld, om het lid age van struct Person te benaderen:
p.age = 27;
We hebben het lid age van struct Person benaderd via de instantie van de struct, p. We hebben de waarde van het lid age ingesteld op 27.
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:

Hier is een screenshot van de code:

Code‑uitleg:
- Include de iostream header voor functies.
- Include de std naamruimte om klassen zonder prefix te gebruiken.
- Creëer een struct genaamd Person.
- Begin van de struct‑body.
- Creëer struct‑lid citizenship van type integer.
- Creëer struct‑lid age van type integer.
- Einde van de struct‑body.
- Roep
main()aan; programmeerlogica gaat in de body. - Creëer een instantie van struct Person met naam
p. - Stel waarde van struct‑lid citizenship in op 1.
- Stel waarde van struct‑lid age in op 27.
- Print waarde van struct‑lid citizenship op console met tekst.
- Print waarde van struct‑lid age op console met tekst.
- Programma retourneert waarde bij succes.
- Einde
main().
Pointers naar Structuur
Het is mogelijk om een pointer te maken die naar een structuur wijst. Dit is vergelijkbaar met pointers naar native datatypes zoals int, float, double, etc. Let 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:
Hier is een screenshot van de code:
Code‑uitleg:
- Include iostream header.
- Include std naamruimte.
- Creëer struct genaamd Length.
- Start van de body van struct Length.
- Creëer struct‑lid meters van integer datatype.
- Creëer struct‑lid centimeters van type integer.
- Einde van de body van struct Length.
- Roep
main()aan. - Start van de body van
main(). - Creëer pointer variabele
*ptren normale variabelelvan type Length. - Sla adres van variabele
lop in pointer variabele. - Toon bericht op console, vraag gebruiker om waarde voor meters.
- Lees waarde via toetsenbord. Het lid meters wordt hier benaderd via de pointer variabele.
- Toon bericht op console, vraag gebruiker om waarde voor centimeters.
- Lees waarde via toetsenbord. Het lid centimeters wordt hier benaderd via de pointer variabele.
- Toon de uitgelezen waarden op console met tekst.
- Programma retourneert waarde bij succes.
- Einde van de body van
main().
Struct als Functie‑Argument
Je kunt een struct aan een functie doorgeven als argument. Dit gebeurt op dezelfde manier als een gewoon argument. Struct‑variabelen kunnen ook aan een functie doorgegeven worden. Een goed voorbeeld is wanneer je de waarden van struct‑leden wilt tonen. 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:

Hier is een screenshot van de code:

Code‑uitleg:
- Include iostream header in ons bestand. We kunnen dan functies gebruiken zonder fouten.
- Include std naamruimte in ons programma om klassen te gebruiken. We hoeven de naamruimte niet aan te roepen.
- Creëer een struct genaamd Person.
- Start van de body van struct Person.
- Creëer een lid van struct Person. Het lid heet citizenship en is van type integer.
- Creëer een lid van struct Person. Het lid heet age en is van type integer.
- Einde van de body van struct Person.
- Creëer een functie die de instantie van struct Person,
p, als argument neemt. - Roep de main functie aan. De { markeert het begin van de body van main().
- Creëer een instantie van struct Person en geef het de naam
p. - Benader struct‑lid citizenship via instantie
pen wijs waarde 1 toe. - Benader struct‑lid age via instantie
pen wijs waarde 27 toe. - Roep de functie aan en geef de instantie
pals argument door. - De functie moet een waarde retourneren bij succes.
- Einde van de body van
main(). - Creëer de body van de functie.
- Start van de body van de functie.
- Benader struct‑lid citizenship waarde en print op console met tekst.
- Benader struct‑lid age waarde en print op console met tekst.
- Einde van de functie‑body.
Beperking van een C++ Structuur
De volgende beperkingen gelden voor structuren:
- Het struct‑datatype kan niet behandeld worden als built‑in datatypes.
- Operators als +, -, en anderen kunnen niet op structuur‑variabelen gebruikt worden.
- Structuren ondersteunen geen data hiding. De leden van een structuur zijn toegankelijk voor elke functie ongeacht de scope.
- Static members kunnen niet binnen de structuur‑body gedeclareerd worden.
- Constructors kunnen niet binnen een structuur gemaakt worden.
Samenvatting:
- Een struct is een datastructuur die data‑elementen van verschillende typen opslaat.
- Waar een array elementen van een vergelijkbaar type opslaat, slaat een struct elementen van verschillende typen op.
- Een struct moet gebruikt worden wanneer de data‑elementen niet verwacht worden te veranderen.
- De leden van een struct worden benaderd met de punt‑operator (.).
- We moeten een instantie van de struct creëren.
- Om een C++ struct te maken, gebruiken we het
struct-keyword. - Pointers naar een struct worden op dezelfde manier gemaakt als pointers naar reguliere typen.
- Een struct kan als argument aan een functie doorgegeven worden op dezelfde manier als gewone functies.
C Taal
- C Structs en Pointers onder de knie krijgen: Een praktische gids
- C++ Operators Uitgelegd: Typen, Voorbeelden en Voorbeeldprogramma's
- C++ do‑while Lus: Syntaxis, Praktische Voorbeelden en Geneste Lussen
- C++ Switch‑Case Onder de Knie: Syntaxis, Gebruik en Praktische Voorbeelden
- C++ Dynamische Array‑Allocatie: Praktische Handleiding met Code‑Voorbeelden
- C++ Pointers Onder de Knie: Concepten, Voorbeelden & Praktische Toepassingen
- C++ Char Datatype: Declaratie, ASCII en Conversie‑Technieken
- C++ Operator Overloading – Praktische Handleiding met Code‑Voorbeelden
- Beheersen van std::list in C++: Syntaxis, Functies & Praktische Voorbeelden
- C++ Functies Uitgelegd met Praktische Codevoorbeelden
- C++ Struct vs Class: Belangrijkste Verschillen, Syntaxis en Beste Gebruikssituaties