[Data Types] Show
BeschreibungEin Array ist eine Sammlung von Variablen, auf die mit einer Indexnummer zugegriffen wird. Arrays in der Programmiersprache C ++, in der Arduino-Skizzen geschrieben sind, sind zwar kompliziert, aber die Verwendung einfacher Arrays ist relativ unkompliziert. Array erstellen / deklarierenAlle folgenden Methoden sind gültige Methoden zum Erstellen (Deklarieren) eines Arrays.
Du kannst ein Array deklarieren, ohne es wie in Zugriff auf ein ArrayArrays sind nullindiziert, das heißt, bezogen auf die Array-Initialisierung oben, befindet sich das erste Element des Arrays am Index 0.
Das bedeutet auch, dass in einem Array mit zehn Elementen der Index neun das letzte Element ist. Daher:
Aus diesem Grund solltet du beim Zugriff auf Arrays vorsichtig sein. Beim Zugriff auf das Ende eines Arrays (mit einer Indexnummer, die größer ist als die von dir deklarierte Arraygröße - 1), wird aus dem Speicher gelesen, der für andere Zwecke verwendet wird. Das Lesen an diesen Orten wird wahrscheinlich nicht viel bewirken, außer ungültige Daten liefern. Das Schreiben in zufällige Speicherorte ist definitiv eine schlechte Idee und kann oft zu unglücklichen Ergebnissen wie Abstürzen oder Programmstörungen führen. Dies kann auch ein schwieriger Fehler sein. Im Gegensatz zu BASIC oder JAVA überprüft der C ++ - Compiler nicht, ob der Array-Zugriff innerhalb der zulässigen Grenzen der von Ihnen angegebenen Array-Größe liegt. So weist du einem Array einen Wert zu:
So rufst du einen Wert aus einem Array ab:
Arrays und FOR-SchleifenArrays werden oft innerhalb von Schleifen bearbeitet, wobei der Schleifenzähler als Index für jedes Array-Element verwendet wird. Wenn du beispielsweise die Elemente eines Arrays über den seriellen Anschluss ausgeben möchtest, kannst du Folgendes tun: C Kurs - also ein Array ist wenn man viele Variablen...1. Syntax Wie wir Variablen deklarieren wissen wir noch Die Syntax für die Deklaration eines Array ist recht einfach: Will
man auf ein Element des Arrays zugreifen, so gibt man einfach den Index des Elementes in eckigen Klammern an: In C ebenso wie in auf C basierenden Programmiersprachen(z.B. Java, Perl usw) sind die Arrays 'zero based indexed', d.h. das erste Element des Arrays hat den Index Null, das bedeutet deklariert man in seinem Programm int y[50]; dann erhält man ein Array mit den Indexzahlen y[0] bis y[49]. Dies ist im ersten Moment etwas gewöhnungsbedürftig, aber auch nicht unpraktisch. Man kann Array gleich bei der Deklaration in einem Block mit geschweiften Klammern initialisieren, z.B so: 2. Speicherstruktur eines Arrays Sie erinnern sich das eine Variable ein Stück Speicherplatz im Hauptspeicher Ihres Computers ist. Bei der Deklaration eines Arrays wird der Compiler angewiesen n-mal nacheinander den Speicherplatz für diese Variable zu reservieren. Man hat anschließen einen zusammenhängen Block von Slots des Variablentyps im Hauptspeicher stehen, der für die Array Elemente reserviert ist. Folgende Abbildung sollte dies veranschaulichen: Wichtig: viele Compiler initialisieren den Array bei er Deklaration gleich mit Nullen, dies ist sehr praktisch, leider tun andere Compiler dies nicht. In den einzelnen Slots steht dann das drin, was schon vorher drinstand also garbage (Müll). Wenn man sich nicht völlig sicher ist, das die Software an der man gerade sitzt, niemals von jemand anderem weiterentwickelt wird, sollte man den Array (oder das Array???, der Berliner würde sagen 'dem Array') in einer Schleife initialisieren. 3. Arraygrenzen Wichtig: C überprüft die Arraygrenzen nicht.
wird anstandslos kompiliert obwohl der Array eigentlich nur 100 integer Elemente hat. Man bekommt keine Warnung und nichts. Führt man das Programm jetzt aus wird in die Speicheradresse die 1000 * integer von der Arraystartadresse entfernt ist, 42, eingefügt. Dies kann zu allen möglichen führen, z.B. das Programm stürzt ab. Unter alten Betriebssystemen ohne Speicherschutz, konnte man auf diese Weise sogar den ganzen Rechner zum Absturz bringen. Oder in einem anderen Array taucht plötzlich ein unsinniger Wert auf, oder schlimmer, der Wert ist nicht unsinnig sondern sogar plausibel. Oder an dieser Stelle steht vielleicht zufällig unbenutzter, freier Speicherplatz, dann merkt man von dem Fehler erstmal nichts. Der zweite Teil des Beispiels, x[index] = 0; soll zum einen verdeutlichen, das man als Index natürlich eine integer Variable einsetzen kann, welche dann auch einen unsinnigen Wert, hier -25, enthalten kann. 4. mehrdimensionale Array Wem ein eindimensionaler Array nicht reicht, der kann sich auch mehrdimensionale Arrays deklarieren:
Das sieht auch aller recht klar und verständlich aus oder? Man gibt einfach in weiteren eckigen Klammer die gewünschte Größe der nächsten Dimension an. Wie viele Dimensionen man anlegen kann ist abhängig vom Compiler und steht irgendwo in dessen Handbuch, bei mir waren es bis jetzt immer ausreichend genug (ich hatte auch noch nie mehr als 3). Die maximale Größe des Speicherplatzes für einen Array ist auch nicht unendlich.Die natürliche Grenze ist der maximal zur Verfügung stehende freie Speicherplatz, mehr ist halt nicht da. Unter alten Compilern auf älteren Betriebssystemen (MSDOS) gab es hier auch andere Einschränkungen, 16 Kilobyte, 32 Kilobyte 64 Kilobyte durften je nach Speichermodell nicht überschritten werden. Folgende Abbildung soll veranschaulichen wie ein mehrdimensionaler Array im Hauptspeicher angelegt wird:
5. Array an eine Funktion übergeben Einen eindimensionalen Array an eine Funktion zu übergeben ist völlig simpel, man schreibt in den Funktionskopf seine Arrayvariable, und im innern der Funktion benutzt man ihn einfach. Meist ist es schlau, noch die Größe des Arrays, die Anzahl seiner Elemente, mit zu übergeben. Dann kann man auch verschieden große Arrays mit ein und der selben Funktion bearbeiten. Natürlich gilt auch hier, der Compiler überprüft die Arraygrenzen nicht, deshalb braucht man die Größe des Arrays meistens sowieso, es sei denn die Größe ist immer gleich und man kennt sie. Hier kommt auch schon ein Beispiel:
Komplizierter wird es, wenn man einen mehrdimensionalen Array an eine Funktion übergeben will. Hier muß man zumindestens die Größe der 2. bis ntnen Dimension angeben, sonst weiß der Compiler nicht, wie er den Speicher organisieren soll. Die der 1. Arraydimension darf man natürlich auch angeben, wenn man sie schon vorher weiß. Sehen Sie sich bitte noch mal die Abbildung des mehrdimensionalen Array an und überlegen, warum man dem Compiler die Größe der 2. und aller weiteren Dimensionen mitteilen muß. Hier ein Beispielprogramm:
Probieren Sie die beiden Progrämmchen doch einfach mal aus und sehen sich den Output an.
eigentlich ändern? Nun der Compiler organisiert die Variablenübergabe für Arrays by Reference, d.h es wird ein Pointer übergeben, der direkt auf den Speicherort des Arrays zeigt, wird sp�ter noch mal erklärt. Bei "normalen" Variablen übergibt der Compiler eine Kopie der Variable an die Funktion (by value), er legt einen neuen Speicherbereich an und kopiert dort den Inhalt der Variablen hinein. Bei Arrays tut er dies jedoch nicht, sondern übegint nur einen Pointer auf den Beginn des Speicherbereiches des Arrays. Das hat damit zu tun, das Arrays tendenziell sehr groß werden können und man so den Hauptspeicher sehr schnell verbraucht. Die C/C++ Standard Referenz von Herb Schildt: Wie ist ein Array aufgebaut?Die Einträge besitzen dabei eine bestimmte Reihenfolge – den sogenannten Index der jeweiligen Position. Bei einem Array wird immer ab der 0 angefangen! Dabei erhält das erste Element den Index 0, das zweite den Index 1, der dritte Wert den Index 2 und der vierte Eintrag den Index 3.
Was ist ein Array Wert?Ein Array ist eine aus Zeilen und Spalten bestehende Tabelle mit Werten. Wenn Sie die Werte Ihrer Zellen in einer bestimmten Reihenfolge gruppieren möchten, können Sie in Ihrer Tabelle Arrays verwenden. Manche Funktionen geben Arrays zurück.
Was ist ein Array und wie wird dieses definiert?Begriff: Datenstruktur, in der Datenelemente des gleichen Datentyps unter einem gemeinsamen Namen zusammengefasst werden (homogene Struktur). Die Elemente des Array werden durch Indizierung des Arraynamens angesprochen.
Wie gibt man ein Array aus?Arrays lassen sich auch anders, nämlich direkt bei der Deklaration, initialisieren. Die Werte müssen dabei zwischen geschweiften Klammern stehen: int numbers[] = { 1, 2, 4, 5, 9 }; Wenn Sie das Array so initialisieren, können Sie die Größe des Arrays auch weglassen.
|