User manual
Kapitel 4 Pawn Script
4.4.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 95).
4.4.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);
Bei mehrdimensionalen Arrays kann der "sizeof"-Operator die Anzahl der Elemente jeder Dimension
zurückgeben. Für die letzte (niedrigste) Dimension ist ein Element ein einzelner Eintrag, jedoch für
die höchste Dimension ist es ein Sub-Array. Beachten Sie, dass im nachfolgenden Codeausschnitt
die Syntax "sizeof matrix" die Anzahl der Elemente der höhere Dimension zurückgibt, und dass die
Syntax "sizeof matrix[]" die niedrigere Dimension des zweidimensionalen Arrays ausgibt. Der
Codeausschnitt gibt 3 (höhere Dimension) und 2 (niedrigere Dimension) aus.
Rev. 01 95