C++ Structuur met voorbeeld

โšก Slimme samenvatting

Structuur in C++ Dit is een door de gebruiker gedefinieerd gegevenstype dat elementen van verschillende gegevenstypen onder รฉรฉn naam groepeert, waardoor รฉรฉn variabele gerelateerde waarden zoals een persoonsnaam, nationaliteit en leeftijd samen kan bevatten.

  • ???? Verschillende gegevenstypen: Een struct groepeert variabelen van verschillende typen onder รฉรฉn door de gebruiker gedefinieerde naam.
  • ๐Ÿ”‘ struct-trefwoord: Definieer een structuur met het trefwoord `struct` en som vervolgens de leden op tussen accolades.
  • ๐Ÿงฑ Instanties creรซren: Het schrijven van Person p maakt een structuurvariabele aan en wijst er geheugen aan toe.
  • ๐ŸŽฏ Puntoperator: Lees of stel elk lid in via de instantie, bijvoorbeeld p.age = 27.
  • โžก๏ธ Aanwijzers en functies: Een struct werkt met pointers en wordt als een gewoon argument aan een functie doorgegeven.
  • ๐Ÿค– AI-assistentie: GitHub Copilot en andere AI-assistenten genereren structuurdefinities en toegang tot leden vanuit een opmerking.

C++ struct

Waar zit een structuur in C++?

Een STRUCT is een C++ gegevensstructuur die kan worden gebruikt om elementen van verschillende gegevenstypen samen op te slaan. In C++Een structuur is een door de gebruiker gedefinieerd gegevenstype. De structuur creรซert een gegevenstype voor groepen.ping items van verschillende gegevenstypen onder รฉรฉn enkel 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 voorkomen dat u in de toekomst informatie over veel personen moet opslaan. Dit betekent dat er variabelen voor verschillende individuen moeten worden aangemaakt. Bijvoorbeeld: naam1, nationaliteit1, leeftijd1, enzovoort. Om dit te voorkomen, is het beter om een โ€‹โ€‹structuur te gebruiken.

Wanneer gebruik je een structuur?

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

  • Gebruik een struct wanneer u elementen van verschillende gegevenstypen onder รฉรฉn gegevenstype wilt opslaan.
  • C++ structs 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++ Structurele initialisatie

Het creรซren van een C++ structuur 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 a 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 het exemplaar van de struct en de punt (.) operator. Bijvoorbeeld, om toegang te krijgen tot de lidleeftijd 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 Uitleg:

  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 wijst. Het is vergelijkbaar met hoe pointers die naar native data types wijzen zoals int, float, double, etc. worden gemaakt. Let op dat een pointer in C++ slaat een geheugenlocatie op.

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 Uitleg:

  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 Uitleg:

  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 beperkingen van structuren zijn als volgt:

  • 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.

Veelgestelde vragen

In C++ Een struct en een klasse zijn vrijwel identiek. Het enige echte verschil zit in de standaardtoegang: structleden zijn standaard openbaar, terwijl klasseleden privรฉ zijn. Beide ondersteunen lidfuncties, constructors en overerving.

Een AC-struct bevat alleen gegevens, en je moet 'struct' voor elke variabeledeclaratie schrijven. C++ Een struct kan ook lidfuncties, constructors en toegangsspecificaties bevatten, en het sleutelwoord struct is optioneel bij het declareren van variabelen.

Declareer de struct en definieer vervolgens een array ervan, bijvoorbeeld Person people[3]. Elk element is een volledige struct en je hebt toegang tot de leden via people[0].age. Arrays van structuren slaan veel records van hetzelfde type bij elkaar op.

Een geneste structuur is een structuur die als lid binnen een andere structuur is gedeclareerd. Het groepeert gerelateerde subgegevens, zoals een Datum-structuur binnen een Werknemer-structuur. Je bereikt de binnenste leden door de puntoperator te gebruiken.

De grootte is ruwweg de som van de afzonderlijke leden, plus de opvulling die de compiler toevoegt voor uitlijning, waardoor sizeof de ruwe totale grootte kan overschrijden. Lidfuncties voegen niets toe. Het sorteren van leden op grootte vermindert onnodige opvulling.

Gebruik de pijloperator wanneer je een pointer naar een structuur vasthoudt. In plaats van (*ptr).age leest de afkorting ptr->age hetzelfde lid. De puntoperator werkt op een directe instantie, niet op een pointer.

Ja. AI-codeerassistenten zetten een korte aanwijzing of opmerking om in een complete code. C++ struct, inclusief leden, constructors en veldtoegang. Controleer altijd de gegenereerde gegevenstypen en de uitlijning, aangezien AI projectspecifieke vereisten kan missen.

Ja. GitHub-copiloot Het programma suggereert structuurdefinities, lidvariabelen en toegang via punt of pijltoetsen terwijl je typt in je editor. Het gaat goed om met repetitieve standaardcode, hoewel je nog steeds de typen, opvulling en logica moet controleren voordat je compileert.

Vat dit bericht samen met: