Initialisieren von Structs
Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 42 von 63.
Obwohl du Strukturvariablen erstellen und ihren Mitgliedern anschließend einzeln Werte zuweisen kannst, bietet C eine bequemere Möglichkeit, Anfangswerte festzulegen. Du kannst eine Strukturvariable bei ihrer Deklaration mithilfe einer in geschweifte Klammern eingeschlossenen Initialisierungsliste initialisieren.
Die Syntax für die Initialisierung einer Struktur lautet:
struct StructureName variableName = {value1, value2, ...};Am Beispiel unserer Point-Struktur kannst du sie in einer einzigen übersichtlichen Zeile deklarieren und initialisieren:
struct Point p1 = {10, 20};Dies erstellt eine Point-Variable namens p1, wobei x auf 10 und y auf 20 gesetzt wird. Die Werte in der Initialisierungsliste werden den Strukturmitgliedern in der Reihenfolge zugewiesen, in der sie in der Strukturdefinition deklariert wurden.
Diese Initialisierungsmethode ist nicht nur prägnanter als separate Zuweisungen, sondern stellt auch sicher, dass deine Struktur mit sinnvollen Werten statt mit zufälligen Datenmüllwerten beginnt. Sie ist besonders nützlich, wenn du die Anfangswerte bereits zur Kompilierzeit kennst und effizient sofort einsatzbereite Strukturvariablen erstellen möchtest.
Aufgabe
EinfachErstelle ein C-Programm, das die Initialisierung von Strukturen mithilfe von Initialisierungslisten demonstriert. Dein Programm sollte:
- Eine
structnamensEmployeemit den folgenden Mitgliedern definieren:- Eine Ganzzahl
idzum Speichern der Mitarbeiter-ID - Ein Zeichen-Array
departmentmit der Größe 15 zum Speichern des Abteilungsnamens - Eine Ganzzahl
yearsOfServicezum Speichern der Dienstjahre - Eine Gleitkommazahl
salaryzum Speichern des Gehalts des Mitarbeiters
- Eine Ganzzahl
- Drei
Employee-Variablen mithilfe von Initialisierungslisten mit den folgenden Daten erstellen:emp1: ID 101, Abteilung „Engineering“, 5 Dienstjahre, Gehalt 75000.50emp2: ID 102, Abteilung „Marketing“, 3 Dienstjahre, Gehalt 65000.25emp3: ID 103, Abteilung „Sales“, 8 Dienstjahre, Gehalt 80000.75
- Die Informationen zu jedem Mitarbeiter in diesem exakten Format ausgeben:
Employee 1:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]Employee 2:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]Employee 3:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]
- Das Gesamtgehalt aller drei Mitarbeiter berechnen und im Format
Total Salary: [total]ausgeben - Die durchschnittlichen Dienstjahre berechnen und im Format
Average Years of Service: [average]ausgeben
Diese Aufgabe prüft dein Verständnis der Initialisierung von Strukturen mithilfe von Initialisierungslisten, bei der du Strukturvariablen in einer einzigen Zeile deklarierst und initialisierst. Die Werte in der Initialisierungsliste müssen in derselben Reihenfolge angegeben werden, in der die Mitglieder in der Strukturdefinition deklariert wurden.
Deine erwartete Ausgabe sollte wie folgt aussehen:
Employee 1:
ID: 101
Department: Engineering
Years of Service: 5
Salary: 75000.50
Employee 2:
ID: 102
Department: Marketing
Years of Service: 3
Salary: 65000.25
Employee 3:
ID: 103
Department: Sales
Years of Service: 8
Salary: 80000.75
Total Salary: 220001.50
Average Years of Service: 5.33Probier es selbst
#include <stdio.h>
// TODO: Definieren Sie hier die Employee-Struktur
int main() {
// TODO: Erstellen Sie drei Employee-Variablen mithilfe von Initialisierungslisten
// TODO: Informationen für jeden Mitarbeiter ausgeben
// TODO: Gesamtgehalt und durchschnittliche Dienstjahre berechnen und ausgeben
return 0;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Zeiger-Grundlagen
Was ist ein Zeiger?Zeiger deklarierenDer Adressoperator (&)Der Dereferenzierungsoperator (*)NULL-ZeigerZusammenfassung: Zeiger-Grundlagen4Projekt: Einfaches Text-Tool
ProjektübersichtZeichen zählen7Strukturen (structs)
Was ist ein Struct?Deklarieren eines StructsErstellen von Struct-VariablenZugriff auf Struct-MemberInitialisieren von StructsZusammenfassung: Studentendaten-Struct2Pointer und Arrays
Array-Namen als PointerArray-Elemente - PointerPointer-ArithmetikPointer vergleichenWiederholung: Array-Durchlauf mit Pointern5Zeiger und Funktionen
Wertübergabe (Pass-by-Value)Zeiger an Funktionen übergebenVariablen über Zeiger ändernEin klassisches Beispiel: SwapArrays an Funktionen übergebenZusammenfassung: Zeiger als Funktionsargumente8Structs und Zeiger
Zeiger auf StructsDer Pfeiloperator (->)Structs per Wert übergebenÜbergabe von Struct-ZeigernDynamische Allokation von StructsZusammenfassung: Struct ändern - Ptr11Finale Wiederholungsaufgaben
Wiederholung: Dynamische String-KonkatenationWiederholung: Array von StructsWiederholung: Wortfrequenz-Zähler3Character-Arrays und Strings
Strings als char-ArraysDer Null-TerminatorString-Eingabe mit scanfVerwendung von strlen()Verwendung von strcpy()Verwendung von strcat()Verwendung von strcmp()Zusammenfassung: Grundlegende String-FunktionenÜbe selbstständig: Online-C-Compiler