C++ Struktur mit Beispiel

⚡ Intelligente Zusammenfassung

Struktur in C++ ist ein benutzerdefinierter Datentyp, der Elemente verschiedener Datentypen unter einem einzigen Namen zusammenfasst, sodass eine Variable zusammengehörige Werte wie Name, Staatsangehörigkeit und Alter einer Person zusammenhalten kann.

  • 📦 Verschiedene Datentypen: Eine Struktur gruppiert Variablen unterschiedlicher Typen unter einem benutzerdefinierten Namen.
  • 🔑 struct-Schlüsselwort: Definiere eine Struktur mit dem Schlüsselwort struct und liste dann die Elemente in geschweiften Klammern auf.
  • 🧱 Instanzen erstellen: Die Methode `Writing Person p` erstellt eine Strukturvariable und reserviert deren Speicher.
  • 🎯 Punktoperator: Lesen oder setzen Sie ein beliebiges Element über die Instanz, wie in p.age = 27.
  • ➡️ Zeiger und Funktionen: Eine Struktur arbeitet mit Zeigern und wird einer Funktion wie ein gewöhnliches Argument übergeben.
  • 🤖 KI-Unterstützung: GitHub Copilot und andere KI-Assistenten erstellen Strukturdefinitionen und Zugriffsrechte für Mitglieder aus einem Kommentar.

C++ Struct

Was ist eine Struktur in C++?

Eine Struktur ist eine C++ Datenstruktur, die verwendet werden kann, um Elemente unterschiedlicher Datentypen zusammen zu speichern. In C++Eine Struktur ist ein benutzerdefinierter Datentyp. Die Struktur erstellt einen Datentyp für Gruppen.ping Elemente unterschiedlicher Datentypen unter einem einzigen Datentyp.

Beispielsweise:

Angenommen, Sie müssen Informationen über eine Person, ihren Namen, ihre Staatsbürgerschaft und ihr Alter speichern. Sie können Variablen wie Name, Staatsbürgerschaft und Alter erstellen, um die Daten separat zu speichern.

Möglicherweise müssen Sie zukünftig Informationen über viele Personen speichern. Das bedeutet, dass Variablen für verschiedene Personen erstellt werden müssen, z. B. Name1, Staatsangehörigkeit1, Alter1 usw. Um dies zu vermeiden, ist es besser, eine Struktur zu erstellen.

Wann sollte eine Struktur verwendet werden?

Hier sind einige Gründe für die Verwendung von Struktur in C++.

  • Verwenden Sie eine Struktur, wenn Sie Elemente unterschiedlicher Datentypen unter einem Datentyp speichern müssen.
  • C++ Strukturen sind ein Werttyp und kein Referenztyp. Verwenden Sie eine Struktur, wenn Sie Ihre Daten nach der Erstellung nicht mehr ändern möchten.

C++ Strukturinitialisierung

So erstellen Sie ein C++ Struktur verwenden wir das Schlüsselwort struct, gefolgt von einem Bezeichner. Der Bezeichner wird zum Namen der Struktur. Hier ist die Syntax für die Erstellung einer C++ strukturieren:

Syntax:

struct struct_name  
{  
     // struct members
}   

In der obigen Syntax haben wir das Schlüsselwort struct verwendet. Der Strukturname ist der Name der Struktur.

Die Strukturmitglieder werden in geschweiften Klammern hinzugefügt. Diese Mitglieder gehören wahrscheinlich zu unterschiedlichen Datentypen.

Beispielsweise:

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

Im obigen Beispiel ist Person eine Struktur mit drei Mitgliedern. Zu den Mitgliedern zählen Name, Staatsangehörigkeit und Alter. Ein Mitglied ist vom Datentyp char, während die restlichen 2 Ganzzahlen sind. Beim Erstellen einer Struktur wird kein Speicher zugewiesen. Speicher wird erst zugewiesen, nachdem der Struktur eine Variable hinzugefügt wurde.

Strukturinstanzen erstellen

Im obigen Beispiel haben wir eine Struktur namens Person erstellt. Wir können eine Strukturvariable wie folgt erstellen:

Person p;

Das p ist eine Strukturvariable vom Typ Person. Wir können diese Variable verwenden, um auf die Mitglieder der Struktur zuzugreifen.

Auf Strukturmitglieder zugreifen

Um auf die Strukturmitglieder zuzugreifen, verwenden wir die Instanz der Struktur und den Punktoperator (.). So greifen Sie beispielsweise auf das Mitglied „age“ der Struktur „Person“ zu:

p.age = 27;

Wir haben über die Instanz der Struktur auf das Mitgliedsalter der Struktur Person zugegriffen, S. Wir haben dann den Wert des Mitgliedsalters auf 27 gesetzt.

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

Ausgang:

Auf Strukturmitglieder zugreifen

Hier ist ein Screenshot des Codes:

Auf Strukturmitglieder zugreifen

Code Erläuterung:

  1. Fügen Sie die iostream-Header-Datei in unser Programm ein, um die darin definierten Funktionen zu verwenden.
  2. Schließen Sie den std-Namespace ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
  3. Erstellen Sie eine Struktur mit dem Namen Person.
  4. Der Anfang des Strukturkörpers.
  5. Erstellen Sie ein Strukturmitglied mit dem Namen „citizenship“ vom Typ „Integer“.
  6. Erstellen Sie ein Strukturmitglied mit dem Namen „age“ vom Typ „Integer“.
  7. Ende des Strukturkörpers.
  8. Rufen Sie die Funktion main() auf. Die Programmlogik sollte im Hauptteil dieser Funktion hinzugefügt werden.
  9. Erstellen Sie eine Instanz der Struktur Person und geben Sie ihr den Namen p.
  10. Setzen Sie den Wert der Staatsbürgerschaft des Strukturmitglieds auf 1.
  11. Legen Sie den Wert des Strukturmitgliedsalters auf 27 fest.
  12. Geben Sie den Wert des Strukturmitglieds „citizenship“ zusammen mit einem anderen Text auf der Konsole aus.
  13. Geben Sie den Wert des Strukturmitgliedsalters zusammen mit einem anderen Text auf der Konsole aus.
  14. Das Programm sollte einen Wert zurückgeben, wenn es erfolgreich ausgeführt wird.
  15. Ende der main()-Funktion.

Hinweise zur Struktur

Es ist möglich, einen Zeiger zu erstellen, der auf eine Struktur zeigt. Dies ist ähnlich wie bei Zeigern, die auf native Datentypen wie int, float, double usw. zeigen. Beachten Sie, dass ein Zeiger in C++ speichert einen Speicherplatz.

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

Ausgang:

Hinweise zur Struktur

Hier ist ein Screenshot des Codes:

Hinweise zur Struktur

Code Erläuterung:

  1. Binden Sie die iostream-Header-Datei in unser Programm ein, um deren Funktionen nutzen zu können.
  2. Fügen Sie den std-Namespace in unser Programm ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
  3. Erstellen Sie eine Struktur mit dem Namen „Length“.
  4. Beginn des Hauptteils der Strukturlänge.
  5. Erstellen Sie ein Strukturmitglied mit dem Namen „meters“ vom Datentyp „Ganzzahl“.
  6. Erstellen Sie ein Strukturelement mit dem Namen „centimeters“ vom Typ „Integer“.
  7. Ende des Strukturkörpers. Länge.
  8. Rufen Sie die Funktion main() auf.
  9. Beginn des Hauptteils der main()-Funktion.
  10. Erstellen Sie eine Zeigervariable *ptr und eine normale Variable l vom Typ Länge.
  11. Speichern Sie die Adresse der Variablen l in unserem Zeigervariable.
  12. Zeigen Sie eine Meldung auf der Konsole an, in der Sie den Benutzer auffordern, den Wert für variable Zähler einzugeben.
  13. Lesen Sie den vom Benutzer über die Tastatur eingegebenen Wert ab. Der Zugriff auf die Mitgliedsfunktion meter erfolgt hier über die Zeigervariable.
  14. Zeigt eine Meldung auf der Konsole an, in der der Benutzer aufgefordert wird, den Wert für variable Zentimeter einzugeben.
  15. Lesen Sie den vom Benutzer über die Tastatur eingegebenen Wert ab. Auf die Mitgliedsfunktion Zentimeter wird hier über die Zeigervariable zugegriffen.
  16. Zeigen Sie die vom Benutzer gelesenen Werte auf der Konsole zusammen mit anderem Text an.
  17. Das Programm muss bei erfolgreicher Ausführung einen Wert zurückgeben.
  18. Ende des Hauptteils der main()-Funktion.

Struktur als Funktionsargument

Sie können einer Funktion eine Struktur als Argument übergeben. Dies geschieht auf die gleiche Weise wie die Übergabe eines normalen Arguments. Die Strukturvariablen können auch an eine Funktion übergeben werden. Ein gutes Beispiel ist, wenn Sie die Werte von Strukturmitgliedern anzeigen müssen. Lassen Sie uns dies demonstrieren:

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

Ausgang:

Struktur als Funktionsargument

Hier ist ein Screenshot des Codes:

Struktur als Funktionsargument

Code Erläuterung:

  1. Fügen Sie die iostream-Header-Datei in unsere Datei ein. Wir werden dann seine Funktionen nutzen, ohne dass Fehler auftreten.
  2. Fügen Sie den std-Namespace in unser Programm ein, um seine Klassen zu verwenden. Wir müssen den Namespace nicht aufrufen, um seine Klassen zu verwenden.
  3. Erstellen Sie eine Struktur mit dem Namen Person.
  4. Beginn des Hauptteils der Struktur Person.
  5. Erstellen Sie ein Mitglied der Struktur Person. Das Mitglied trägt den Namen „citizenship“ und ist vom Typ „Integer“.
  6. Erstellen Sie ein Mitglied der Struktur Person. Das Mitglied heißt age und ist vom Typ Integer.
  7. Ende des Körpers der Struktur Person.
  8. Erstellen Sie eine Funktion, die die Instanz von struct Person, p, als Argument verwendet.
  9. Rufen Sie die Hauptfunktion auf. Das { markiert den Anfang des Hauptteils der Funktion main().
  10. Erstellen Sie eine Instanz der Struktur Person und geben Sie ihr den Namen p.
  11. Greifen Sie auf die Strukturmitgliedsvariable „citizenship“ zu, indem Sie die Instanz der Struktur p verwenden und ihr den Wert 1 zuweisen.
  12. Greifen Sie auf die Strukturmitgliedsvariable age zu, indem Sie die Instanz der Struktur p verwenden und ihr den Wert 27 zuweisen.
  13. Rufen Sie die Funktion auf und übergeben Sie ihr die Instanz der Struktur Person, p, als Argument.
  14. Die Funktion muss bei erfolgreicher Ausführung einen Wert zurückgeben.
  15. Ende des Hauptteils der main()-Funktion.
  16. Erstellen Sie den Hauptteil der Funktion.
  17. Der Beginn des Funktionskörpers.
  18. Greifen Sie auf den Staatsbürgerschaftswert des Strukturmitglieds zu und drucken Sie ihn zusammen mit anderem Text auf der Konsole aus.
  19. Greifen Sie auf den Alterswert des Strukturmitglieds zu und drucken Sie ihn zusammen mit anderem Text auf der Konsole aus.
  20. Ende des Funktionskörpers.

Einschränkung einer C++ Struktur

Die folgenden Strukturen unterliegen Einschränkungen:

  • Der Strukturdatentyp kann nicht wie integrierte Datentypen behandelt werden.
  • OperaZeichen wie + - und andere können nicht verwendet werden Strukturvariablen.
  • Strukturen unterstützen das Ausblenden von Daten nicht. Auf die Mitglieder einer Struktur kann von jeder Funktion unabhängig von ihrem Gültigkeitsbereich zugegriffen werden.
  • Statische Elemente können nicht innerhalb des Strukturkörpers deklariert werden.
  • Konstruktoren können nicht innerhalb einer Struktur erstellt werden.

Häufig gestellte Fragen

In C++ Eine Struktur und eine Klasse sind nahezu identisch. Der einzige wirkliche Unterschied liegt im Standardzugriff: Strukturmitglieder sind standardmäßig öffentlich, während Klassenmitglieder privat sind. Beide unterstützen Memberfunktionen, Konstruktoren und Vererbung.

Eine AC-Struktur speichert nur Daten, und Sie müssen vor jeder Variablendeklaration „struct“ schreiben. C++ struct kann auch Memberfunktionen, Konstruktoren und Zugriffsspezifizierer enthalten, und das Schlüsselwort struct ist bei der Deklaration von Variablen optional.

Deklarieren Sie die Struktur und definieren Sie anschließend ein Array davon, beispielsweise `Person people[3]`. Jedes Element ist eine vollständige Struktur, und Sie greifen auf die Elemente mit `people[0].age` zu. Arrays von Strukturen speichern mehrere Datensätze desselben Typs zusammen.

Eine verschachtelte Struktur ist eine Struktur, die als Element innerhalb einer anderen Struktur deklariert wird. Sie gruppiert zusammengehörige Teildaten, beispielsweise eine Datumsstruktur innerhalb einer Mitarbeiterstruktur. Auf innere Elemente wird durch Verkettung des Punktoperators zugegriffen.

Die Größe entspricht in etwa der Summe ihrer Elemente zuzüglich des vom Compiler zur Ausrichtung hinzugefügten Füllmaterials, sodass `sizeof` den tatsächlichen Wert überschreiten kann. Memberfunktionen tragen nichts bei. Durch die Sortierung der Elemente nach Größe wird unnötiges Füllmaterial reduziert.

Verwenden Sie den Pfeiloperator, wenn Sie einen Zeiger auf eine Struktur halten. Anstelle von (*ptr).age liest die Kurzform ptr->age dasselbe Element. Der Punktoperator funktioniert auf einer direkten Instanz, nicht auf einem Zeiger.

Ja. KI-Programmierassistenten wandeln eine kurze Aufforderung oder einen Kommentar in einen vollständigen Code um. C++ Struktur, einschließlich Member, Konstruktoren und Feldzugriff. Überprüfen Sie stets die generierten Datentypen und deren Ausrichtung, da KI projektspezifische Anforderungen unter Umständen nicht berücksichtigt.

Ja. GitHub-Copilot Der Editor schlägt während der Eingabe Strukturdefinitionen, Membervariablen und den Zugriff per Punkt- oder Pfeiltaste vor. Er verarbeitet wiederkehrenden Boilerplate-Code gut, dennoch sollten Sie vor dem Kompilieren Typen, Füllzeichen und Logik überprüfen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: