Herunterladen Inhalt Inhalt Diese Seite drucken

Progressive Initialisierung Für Arrays; Arrays Und Der "Sizeof"-Operator - Microtronics rapidM2M C32-Serie Benutzerhandbuch

Inhaltsverzeichnis

Werbung

13.5.4.3 Progressive Initialisierung für Arrays
Der Punkte-Operator führt die Initialisierung des Arrays aufgrund der letzten beiden initialisierten Werte
weiter. Der Punkte-Operator (drei Punkte, "...") initialisiert das Array bis zur Arraygrenze.
Beispiel: Auflistung: Arrayinitialisierer
new a[10] = { 1, ... }
new b[10] = { 1, 2, ... }
new c[8]
= { 1, 2, 40, 50, ... }
new d[10] = { 10, 9, ... }
13.5.4.4 Mehrdimensionale Arrays
(Es werden nur Arrays mit bis zu 3 Dimensionen unterstützt)
Mehrdimensionale Arrays sind Arrays, die Referenzen zu weiteren Sub-Arrays enthalten. Zum Beispiel ist
ein zweidimensionales Array ein "Array auf Eindimensionale Arrays".
Beispiele für die Deklaration von zweidimensionalen Arrays:
new a[4][3]
new b[3][2] = [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ]
new c[3][3] = [ [ 1 ], [ 2, ...], [ 3, 4, ... ] ]
new d[2]{10} = [ "agreement", "dispute" ]
new e[2][] = [ ''OK'', ''Cancel'' ]
new f[][] = [ ''OK'', ''Cancel'' ]
Wie die beiden letzten Deklarationen (Variablen "e" und "f") zeigen, hat die letzte Dimension eine nicht
spezifizierte Länge. In diesem Fall wird die Länge des Sub-Arrays aus dem dazugehörigen Initialisierer
erkannt. Jedes Sub-Array hat eine unterschiedliche Länge. In diesem speziellen Beispiel enthält "e[1][5]" den
Buchstaben "l" des Wortes "Cancel", aber "e[0][5]" ist ungültig, da das Sub-Array e[0] nur drei Einträge (die
Buchstaben "O", "K", und den Null-Terminator) beinhaltet. Der Unterschied zwischen den Deklarationen der
Arrays "e" und "f" ist, dass wir bei "f" den Compiler die Anzahl der höheren Dimension ermitteln lassen.
"sizeof f" ist 2 genauso wie "sizeof e" (siehe "Arrays und der "sizeof"-Operator" auf Seite 189).

13.5.4.5 Arrays und der "sizeof"-Operator

Der "sizeof"-Operator gibt die Anzahl der Elemente einer Variablen zurück. Für eine einfache (nicht Array)
Variable ist das Ergebnis von "sizeof" immer 1.
Ein Array mit einer Dimension enthält eine Anzahl von Elementen und der "sizeof"-Operator gibt diese
Anzahl zurück. Der Codeausschnitt unterhalb würde deshalb "5" ausgeben, da das Array 4 Zeichen und den
Null-Terminator enthält.
new msg[] = ''Help''
printf(''%d'', sizeof msg);
Der "sizeof"-Operator gibt immer die Anzahl der Einträge, auch für ein "packed" Array, zurück. Der
Codeausschnitt unterhalb gibt auch "5" aus, da die Variable 5 Einträge enthält, auch wenn diese im Speicher
weniger Platz benötigt.
new msg{} = "Help"
printf(''%d'', sizeof msg);
Rev. 03
// setzt alle Elemente auf 1
// b = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
// c = 1, 2, 40, 50, 60, 70, 80, 90
// d = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
Kapitel 13 Device Logic (Pawn)
189

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis