Syntax: SIZEOF (Variable)
Typ: Funktion
Kategorie: Datentypen
SIZEOF gibt die Größe einer Struktur im Speicher in Bytes aus.
- Diese Struktur kann eine Variable (a, b(), ...) sein, ein Datentyp (z. B. INTEGER) oder ein UDT-Bezeichner (siehe TYPE).
- Wird SIZEOF an einem String variabler Länge angewandt, wird die Größe des Typs ausgegeben. Dieser beträgt bei Strings 12.
- Wird SIZEOF an einem String fester Länge oder an einem ZSTRING bzw. WSTRING angewandt, wird die Größe des reservierten Speicherbereichs ausgegeben.
Das Ergebnis von SIZEOF ist oft gleich dem von LEN, jedoch nicht immer!
Wird SIZEOF auf Arrays angewendet, gibt es immer nur die Größe eines Elements zurück, nicht des ganzen Arrays. Um Missverständnisse zu vermeiden, sollte SIZEOF deswegen immer nur auf einzelne Elemente statt auf das ganze Array angewandt werden.
Beispiel:
DIM a AS INTEGER, b AS STRING, c AS STRING * 5, d(5) AS INTEGER
PRINT "1) LEN"
PRINT LEN(a) ' Ausgabe: 4 => 32bit-Integer
PRINT LEN(b) ' Ausgabe: 0 => Leerstring
PRINT LEN(c) ' Ausgabe: 5 => 5-Zeichen-String
PRINT LEN(d(0)) ' Ausgabe: 4 => 32bit-Integer
PRINT LEN(d) ' Ausgabe: 4 => Pointer auf Array, also 32bit-Integer
PRINT
PRINT "2) SIZEOF"
PRINT SIZEOF(a) ' Ausgabe: 4 => 32bit-Integer
PRINT SIZEOF(b) ' Ausgabe: 12 => Siehe STRING (Datentyp) für Erklärung
PRINT SIZEOF(c) ' Ausgabe: 6 => 5 Zeichen + 1 Nullzeichen CHR(0)
PRINT SIZEOF(d(0)) ' Ausgabe: 4 => 32bit-Integer
PRINT SIZEOF(d) ' Ausgabe: 4 => Pointer auf Array, also 32bit-Integer
SLEEP
Unterschiede zu QB: neu in FreeBASIC
Unterschiede unter den FB-Dialektformen:
In der Dialektform -lang qb steht SIZEOF nicht zur Verfügung und kann nur über __SIZEOF aufgerufen werden.
Siehe auch:
LEN, OFFSETOF, STRING (Datentyp), Verschiedenes