Beispielcode
Der sizeof
-Operator ist nützlich, um mit Arrays (wie z.B. Strings) umzugehen. Dort ist es Standard, dass die Größe des Arrays sich ändert, ohne
dass das ganze restliche Programm umgeschrieben werden muss.
Das Programm gibt einen Text zeichenweise aus. Versuche, den Text zu ändern, das Programm wird weiter funktionieren.
// Definiere Text und Zählervariable
char myStr[] = "this is a test";
void setup() {
// Initialisiere seriellen Port
Serial.begin(9600);
}
void loop() {
// Laufe über das Array (den String), egal, wie lange dieser ist
for (byte i = 0; i < sizeof(myStr) - 1; i++) {
// Gib die Zeichennummer als Dezimalzahl aus
Serial.print(i, DEC);
// Gib ein Gleichheitszeichen aus
Serial.print(" = ");
// Gib das Zeichen des Strings an Stelle "i" aus
Serial.write(myStr[i]);
// Schreibe eine neue Zeile
Serial.println();
}
delay(5000); // Warte 5 Sekunden
}
Anmerkungen und Warnungen
sizeof
gibt die Anzahl an Bytes zurück. Für Arrays größerer Variablentypen, wie z.B. int
, sieht die Schleife wie folgt aus:
int myValues[] = {123, 456, 789};
// Diese for-Schleife funktioniert ordnungsgemäß mit einem Array eines beliebigen Typs und jeder Größe
for (byte i = 0; i < (sizeof(myValues)/sizeof(myValues[0])); i++) {
// Tue etwas mit myValues[i]
}
Beachte zusätzlich, dass ein richtig formattierter String
mit dem NULL
-Symbol beendet wird, also dem ASCII-Zeichen mit Nummer 0.