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);
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.
new matrix[3][2] = { { 1, 2 }, { 3, 4 }, { 5, 6 } }
printf(''%d %d'', sizeof matrix, sizeof matrix[]);
Die Anwendung des "sizeof"-Operators auf mehrdimensionale Arrays ist besonders praktisch, wenn er als
Standardwert für Funktionsargumente verwendet wird.
13.5.5 Operatoren und Ausdrücke
13.5.5.1 Zeichenerklärung
Die Anwendung von einigen Operatoren hängt von der jeweiligen Art des Operanden ab. Aus diesem Grund
wird in diesem Kapitel folgende Notation angewendet:
e
beliebiger Ausdruck (eng. expression)
v
beliebiger Ausdruck, dem ein Wert zugewiesen werden kann ("lvalue" Ausdruck - Variable)
a
ein Array
f
eine Funktion
s
ein Symbol - dies kann eine Variable, eine Konstante oder eine Funktion sein
Rev. 02
Kapitel 13 Device Logic (Pawn)
189