C-Structs meistern: Definition, Variablen, Zugriff & fortgeschrittene Beispiele
C-Structs meistern
Lernen Sie, wie man C-Structs definiert, erstellt und verwendet – mit klaren Beispielen und Best Practices.
Was ist ein C-Struct?
Ein struct (kurz für Structure) ist ein zusammengesetzter Datentyp, der Variablen verschiedener Typen unter einem gemeinsamen Namen gruppiert. Er ist die Grundlage für die Erstellung komplexer Datenstrukturen in C.
Eine Struktur definieren
Bevor Sie Variablen eines Struct-Typs erstellen können, müssen Sie den Typ definieren. Das Schlüsselwort struct leitet die Definition ein:
struct structureName {
dataType member1;
dataType member2;
…
};
Beispiel:
struct Person {
char name[50];
int citNo;
float salary;
};
Dies erstellt einen neuen Typ namens struct Person. Sie können nun Variablen dieses Typs deklarieren.
Struktur-Variablen erstellen
Die Definition eines Struct-Typs allokiert keinen Speicher. Um damit zu arbeiten, deklarieren Sie Variablen:
struct Person {
// members
};
int main() {
struct Person person1, person2, p[20];
return 0;
}
Alternativ können Sie Definition und Variablendeklaration kombinieren:
struct Person {
// members
} person1, person2, p[20];
person1undperson2sind einzelnestruct Person-Variablen.pist ein Array von 20struct Person-Instanzen.
Auf Struct-Mitglieder zugreifen
Zwei Operatoren rufen Mitglieder ab:
.– Member-Zugriffsoperator.->– Zeiger-auf-Struct-Member-Operator (wird in einem separaten Tutorial behandelt).
Um das salary von person2 zu lesen oder zu ändern:
person2.salary
Beispiel 1: Struct in C verwenden
#include <stdio.h>
#include <string.h>
struct Person {
char name[50];
int citNo;
float salary;
} person1;
int main() {
strcpy(person1.name, "George Orwell");
person1.citNo = 1984;
person1.salary = 2500;
printf("Name: %s\n", person1.name);
printf("Citizenship No.: %d\n", person1.citNo);
printf("Salary: %.2f", person1.salary);
return 0;
}
Ausgabe
Name: George Orwell Citizenship No.: 1984 Salary: 2500.00
Beachten Sie, dass strcpy() den String in das festgelegte char-Array kopiert, da der Zuweisungsoperator nicht direkt mit Arrays verwendet werden kann.
typedef mit Structs verwenden
typedef struct Distance {
int feet;
float inch;
} distances;
int main() {
distances d1, d2;
}
Ohne typedef müssten Sie schreiben:
struct Distance d1, d2;
Beispiel 2: Alias in der Praxis
#include <stdio.h>
#include <string.h>
typedef struct Person {
char name[50];
int citNo;
float salary;
} person;
int main() {
person p1;
strcpy(p1.name, "George Orwell");
p1.citNo = 1984;
p1.salary = 2500;
printf("Name: %s\n", p1.name);
printf("Citizenship No.: %d\n", p1.citNo);
printf("Salary: %.2f", p1.salary);
return 0;
}
Ausgabe
Name: George Orwell Citizenship No.: 1984 Salary: 2500.00
Verschachtelte Strukturen
Structs können andere Structs enthalten, was hierarchische Datenmodellierung ermöglicht:
struct complex {
int imag;
float real;
};
struct number {
struct complex comp;
int integers;
} num1, num2;
Um imag von num2 auf 11 zu setzen:
num2.comp.imag = 11;
Beispiel 3: Verschachtelte Structs in Aktion
#include <stdio.h>
struct complex {
int imag;
float real;
};
struct number {
struct complex comp;
int integer;
} num1;
int main() {
num1.comp.imag = 11;
num1.comp.real = 5.25;
num1.integer = 6;
printf("Imaginary Part: %d\n", num1.comp.imag);
printf("Real Part: %.2f\n", num1.comp.real);
printf("Integer: %d", num1.integer);
return 0;
}
Ausgabe
Imaginary Part: 11 Real Part: 5.25 Integer: 6
Warum Structs in C verwenden?
Angenommen, Sie müssen den Namen, die Staatsbürgerschaftsnummer und das Gehalt einer Person speichern. Ohne Structs würden Sie für jedes Feld jeder Person separate Variablen erstellen, was schnell zu Code-Duplikation und Verwirrung führt. Structs kapseln zusammengehörige Daten in eine einzige logische Einheit, was saubereren Code und einfachere Wartung fördert.
Was kommt als Nächstes?
- Structs und Zeiger
- Structs an Funktionen übergeben
C Sprache
- C# Hello World – Ihre erste C#-Anwendung erstellen
- C# Keywords und Identifiers verstehen: Regeln, Listen und Best Practices
- C# Variablen & Primitive Datentypen meistern: Der komplette Guide
- C# Operatoren – Umfassender Leitfaden zu Operatoren in C#
- C# Bitweise und Bit-Shift-Operatoren meistern: Umfassender Leitfaden
- C# Grundlagen: Eingabe und Ausgabe Essentials
- C# Ausdrücke, Anweisungen & Blöcke: Umfassender Leitfaden mit Beispielen
- C# Kommentare meistern: Arten, Best Practices und XML-Dokumentation
- C# Switch Statement meistern: Syntax, Beispiele & Best Practices
- C# Ternärer Operator: Knapper Leitfaden zu bedingten Ausdrücken