➨Arrays erweisen sich als geeignet, wenn eine Vielzahl von Daten eines gleichen Variablentyps verarbeitet werden sollen. Strukturen (struct) sind hingegen eine Sammlung und Beschreibung verschiedener Daten. Sie können beliebige Datentypen verwenden.
Die Struktur ist die Vorlage für die Definition der konkreten Daten.
In den Beispielen werden verschiedene Informationen zu den einzelnen Städten mithilfe unterschiedlicher Datentypen zusammengefasst.
Beispiel Definition als einzelne Arrays:
Die Vorlage:
struct Stadt { int Platz; String Name; String KFZ_Kennzeichen; float Einwohner; String Vorwahl; int Hoehe; };
Definition der Daten:
Stadt Berlin = { 1, "Berlin", "B", 3.64, "030", 30 }; Stadt Hamburg = { 2, "Hamburg", "HH", 1.84, "040", 6 }; Stadt Muenchen = { 3, "München", "M", 1.84, "040", 519 };
Die Zuordnung der der verschiedenen Variable einer struct wird über die Punkt-Schreibweise erledigt.
- StadtName.Platz → int Platz
- Stadtname.Name → String Name
- Stadtname.KFZ-Kennzeichen → String KFZ-Kennzeichen
- StadtName.Einwohner → float Einwohner
- StadtName.Vorwahl → String Vorwahl
- StadtName.Hoehe → int Hoehe
Beispiele:
Berlin.Name = "Berlin-Kreuzberg"; Hamburg.Hoehe = 520; Muenchen.Platz = 4;
Eine Funktion zeigt die Daten an ...
void ZeigeDaten(struct Stadt StadtName) { Serial.print(String(StadtName.Platz) + "\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 vollständige Programm:
struct Stadt
{
int Platz;
String Name;
String KFZ_Kennzeichen;
float Einwohner;
String Vorwahl;
int Hoehe;
};
Stadt Berlin =
{
1,
"Berlin",
"B",
3.64,
"030",
30
};
Stadt Hamburg =
{
2,
"Hamburg",
"HH",
1.84,
"040",
6
};
Stadt Muenchen =
{
3,
"München",
"M",
1.84,
"040",
519
};
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial) {;}
// Formatierung mit Tabstopps
Serial.println("Platz\tName\t\tKfz\tEinwohner\tH\u00f6he \u00fcber NN\tVorwahl");
ZeigeDaten(Berlin);
ZeigeDaten(Hamburg);
ZeigeDaten(Muenchen);
}
void loop()
{
// bleibt leer, Programm läuft nur einmal
}
void ZeigeDaten(struct Stadt StadtName)
{
Serial.print(String(StadtName.Platz) + "\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);
}

Beispiel Definition als zusammengefasstes Array:
Die Vorlage:
struct Stadt { int Platz; String Name; String KFZ_Kennzeichen; float Einwohner; String Vorwahl; int Hoehe; }; const int Max = 3; struct Stadt Namen[Max] = { {1, "Berlin", "B", 3.64, "030", 30}, {2, "Hamburg", "HH", 1.84, "040", 6}, {3, "M\u00fcnchen", "M", 1.47, "089", 519} };
Der Zugriff auf die Elemente erfolgt jetzt über die Punkt-Schreibweise und die Nummer des Elements.
Beispiele:
Namen[0].Name = "Berlin-Kreuzberg"; Namen[1].Platz = 4; Namen[2].Hoehe = 520;
Da es sich um ein Array handelt, kann die Ausgabe über eine for-Schleife erledigt werden:
for (int i = 0; i < Max; i++ ) { Serial.print(String(StadtName.Platz) + "\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); }

Letzte Aktualisierung: