Reference   Language | Libraries | Comparison | Changes

Arrays

Ein Array ist eine Sammlung von Variablen, auf die mit einer Indexzahl zugegriffen werden kann. Arrays können in der Programmiersprache C, auf die der Arduino basiert, kompliziert sein, aber einfache Arrays sind relativ unkompliziert.

Anlegen (Deklaration) eines Arrays

Alle nachstehenden Methoden sind gültige Vorgehensweisen, um ein Array anzulegen (zu deklarieren).

  int myInts[6];
  int myPins[] = {2, 4, 8, 3, 6};
  int mySensVals[6] = {2, 4, -8, 3, 2};
  char message[6] = "hello";

Man kann ein Array auch ohne Wertezuweisung deklarieren, wie bei myInts gezeigt wird.

Bei myInts wird ein Array deklariert ohne eine bestimmte Größe vorzugeben. Der Compiler zählt die Elemente und legt ein Array mit passender Größe an.

Ein Array kann man initialisieren und gleichzeitig dimensionieren, wie bei mySensVal. Beachten Sie, dass bei der Deklaration eines Arrays von Typ char ein zusätzliches Element für die Aufnahme der Null-Terminierung erforderlich ist.

Zugriff auf ein Array

Array sind zero indexed, das bedeutet, bezogen auf die Array-Initialisierung oben, dass das erste Element eines Arrays den Index '0' hat; folglich

mySensVals[0] == 2, mySensVals[1] == 4, und so weiter.

Das bedeutet aber auch, dass in einem Array mit 10 Elementen der Index '9' das letzte Element ist; also:

int myArray[10]={9,3,2,4,3,2,7,8,9,11};
     // myArray[9]    enthält 11
     // myArray[10]   ist unglültig und enthält zufällige Informationen (fremde Speicheradressen)    

Aus diesem Grunde sollte man bei der Adressierung von Arrays vorsichtig sein. Auf Elemente zugreifen, die hinter dem letzen deklarierten Element liegen (einen Index verwenden der größer ist als die deklarierte Arraygröße -1) bedeutet aus Speicherbereichen zu lesen, die für andere Zwecke verwendet werden. Lesen aus diesen Speicherbereichen ist vielleicht nicht so schlimm, außer dass man ungültige Daten bekommt. Das Schreiben in solche Speicherbereiche ist definitiv eine blödsinnige Idee und kann sehr oft zu ungewünschten Ergebnissen, wie Sytemabstürzen oder Programmfehlverhalten,führen. Es kann zudem schwierig werden Bugs mit solchen Fehlfunktionen zu finden.

Im Gegensatz zu BASIC oder JAVA, überprüft der C-Compiler nicht, ob ein Arrayzugriff innerhalb der gültigen Grenzen der Arraygröße liegt, die vorher deklariert worden sind.

Einen Wert an ein Array übergeben:

mySensVals[0] = 10;

Einen Wert aus einem Array lesen:

x = mySensVals[4];

Arrays und FOR-Schleifen

Arrays werden häufig innerhalb von for-Schleifen verändert, indem ein Schleifenzähler als Index für jedes Array-Element benutzt wird. Ein Beispiel: Um die Element eines Arrays über einen seriellen Port auszudrucken, kann man ungefähr folgendermaßen vorgehen:

int i;
for (i = 0; i < 5; i = i + 1) {
  Serial.println(myPins[i]);
}

Beispiel

Ein komplettes Programm, welches die Verwendung von Arrays demonstiert, ist unter Knight Rider Beispiel von Tutorials zu finden.

Siehe auch

Reference Home

Corrections, suggestions, and new documentation should be posted to the Forum.

The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.

Share