struct

Lesezeit: 3 Minuten

Arrays erweisen sich als geeignet, wenn eine Vielzahl von Dat­en eines gle­ichen Vari­ablentyps ver­ar­beit­et wer­den sollen. Struk­turen (struct) sind hinge­gen eine Samm­lung und Beschrei­bung ver­schieden­er Dat­en. Sie kön­nen beliebige Daten­typen ver­wen­den.

Die Struk­tur ist die Vor­lage für die Def­i­n­i­tion der konkreten Dat­en.

In den Beispie­len wer­den ver­schiedene Infor­ma­tio­nen zu den einzel­nen Städten mith­il­fe unter­schiedlich­er Daten­typen zusam­menge­fasst.

Beispiel Def­i­n­i­tion als einzelne Arrays:
Für jede Stadt wird ein Array angelegt.

Die Vor­lage:

struct Stadt
{
int Rang;
String Name;
String KFZ_Kennzeichen;
float Ein­wohn­er;
String Vor­wahl;
int Hoe­he;
};

Def­i­n­i­tion der Dat­en:

Stadt Berlin =
{
1,
“Berlin”,
“B”,
3.64,
“030”,
30
};

Stadt Ham­burg =
{
2,
“Ham­burg”,
“HH”,
1.84,
“040”,
6
};

Stadt Muenchen =
{
3,
“München”,
“M”,
1.84,
“040”,
519
};

Die Zuord­nung der ver­schiede­nen Vari­able ein­er struct wird über die Punkt-Schreib­weise erledigt.

  • StadtName.Rang -> int Rang
  • Stadtname.Name -> String Name
  • Stadtname.KFZ-Kennzeichen -> String KFZ-Kennze­ichen
  • StadtName.Einwohner -> float Ein­wohn­er
  • StadtName.Vorwahl -> String Vor­wahl
  • StadtName.Hoehe -> int Hoe­he

Beispiele:

Berlin.Name -> Berlin
Hamburg.Hoehe -> 520
Muenchen.Rang -> 3

Eine Funk­tion zeigt die Dat­en an …

void ZeigeDaten(struct Stadt Stadt­Name)
{
Serial.print(String(StadtName.Rang) + “\t”);
Serial.print(StadtName.Name + “\t\t”);
Serial.print(StadtName.KFZ_Kennzeichen + “\t”);
Serial.print(String(StadtName.Einwohner) + “\t\t”);
Serial.print(String(StadtName.Hoehe) + “\t\t”);
Serial.println(StadtName.Vorwahl);
}

sie wird mit dem Namen der Stadt aufgerufen.

ZeigeDaten(Berlin);
ZeigeDaten(Hamburg);
ZeigeDaten(Muenchen);

Das voll­ständi­ge Pro­gramm:

Beispiel Def­i­n­i­tion als zusam­menge­fasstes Array:

Die Vor­lage:

struct Stadt
{
int Rang;
String Name;
String KFZ_Kennzeichen;
float Ein­wohn­er;
String Vor­wahl;
int Hoe­he;
};

con­st int Max = 3;

struct Stadt Namen[Max] =
{
{1, “Berlin”, “B”, 3.64, “030”, 30},
{2, “Ham­burg”, “HH”, 1.84, “040”, 6},
{3, “München”, “M”, 1.47, “089”, 519}
};

Der Zugriff auf die Ele­mente erfol­gt jet­zt über die Punkt-Schreib­weise und die Num­mer des Ele­ments.
Die Zäh­lung begin­nt mit 0!

Beispiele:

Namen[0].Rang -> 1
Namen[1].Name -> Ham­burg
Namen[2].Hoehe -> 519

Da es sich um ein Array han­delt, kann die Aus­gabe über eine for-Schleife erledigt wer­den:

for (int i = 0; i < Max; i++)
{
Serial.print(String(Namen[i].Rang) + “\t”);
Serial.print(Namen[i].Name + “\t\t”);
Serial.print(Namen[i].KFZ_Kennzeichen + “\t”);
Serial.print(String(Namen[i].Einwohner) + “\t\t”);
Serial.print(String(Namen[i].Hoehe) + “\t\t”);
Serial.println(Namen[i].Vorwahl);
}

Das voll­ständi­ge Pro­gramm:

Nachträgliche Änderun­gen der Zuweisun­gen sind möglich:

Berlin.Name =“Berlin-Kreuzberg”;
Hamburg.Hoehe = 2;
Namen[0].Name = “Berlin-Kreuzberg”;
Namen[1].Hoehe = 2;

Wenn die ⇒Umlaute nicht kor­rekt angezeigt wer­den …



Letzte Aktualisierung: Okt. 24, 2025 @ 12:05