sizeof

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Schlüsselwörter alphabetisch - Index


Kategorie

Operatoren

Beschreibung

Der Operator sizeof ist auf zwei verschiedene Arten verwendbar:

sizeof unärer Ausdruck
sizeof ( typname )

Das Ergebnis ist in beiden Fällen einen Konstante vom Typ int, die die Größe des vom Operanden (bis auf einige Ausnahmen abhängig vom Typ) verwendeten Speicherplatzes in Bytes angibt. Die Anzahl des für jeden Typ reservierten Speicherplatz hängt von der Maschine ab.

Bei seiner ersten Verwendung wird der Typ vom Ausdruck des Operanden ohne eine Auswertung des Ausdrucks (und damit ohne Seiteneffekte) bestimmt. Wenn der Operand vom Typ char (signed oder unsigned) ist, liefert sizeof den Wert 1. Wenn der Operand zwar vom Typ Array, aber kein Parameter ist, ist das Ergebnis die gesamte Anzahl von Bytes im Array (mit anderen Worten wird ein Array-Name nicht in einen Zeigertyp konvertiert). Die Anzahl von Elementen in einem Array ist 'sizeof array / sizeof array[0].

Wenn der Operand ein Parameter ist, der als Arraytyp oder als Funktionstyp deklariert wurde, liefert sizeof die Größe des Zeigers. Bei Strukturen oder Varianten liefert sizeof die Gesamtanzahl an Bytes einschließlich allen Inhaltes.

Sie können sizeof nicht mit folgenden Ausdrücken verwenden: Funktionstypen, unvollständigen Typen, oder einen lvalue, der ein Objekt eines Bitfeldes bezeichnet.

Der Integer-Typ des Ergebnisses von sizeof ist size_t.

Sie können sizeof in Anweisungen des Präprozessors verwenden. Dies ist spezifisch für C++Builder C++.

In C++ liefert 'sizeof(classtype) die Größe des Objektes, wobei classtype von einigen Basisklassen abgeleitet ist (Denken Sie daran, dass das die Größe der Basisklasse mit einschließt).

Beispiel:

/*  VERWENDEN SIE DEN OPERATOR size, UM DIE GRÖßEN VERSCHIEDERER DATENTYPEN ZU ERHALTEN. */
#include <stdio.h>
struct st {
  char *name;
  int age;
  double height;
  };
struct st St_Array[]= {  /* EIN ARRAY VON structs */
  { "Jr.",     4,  34.20 },  /* St_Array[0] */
  { "Suzie",  23,  69.75 },  /* St_Array[1] */
  };
int main()
 {
   long double LD_Array[] = { 1.3, 501.09, 0.0007, 90.1, 17.08 };
   printf("\nNumber of elements in LD_Array = %d",
   sizeof(LD_Array) / sizeof(LD_Array[0]));
   /****  DIE ANZAHL DER ELEMENTE IN DEM St_Array. ****/
   printf("\nSt_Array has %d elements",
   sizeof(St_Array)/sizeof(St_Array[0]));
   /****  DIE ANZAHL DER BYTES IN JEDEM ELEMENT VON St_Array.  ****/
   printf("\nSt_Array[0] = %d", sizeof(St_Array[0]));
   /****  DIE GESAMTZAHL VON BYTES IM St_Array.  ****/
   printf("\nSt_Array=%d", sizeof(St_Array));
   return 0;
  }

Ausgabe

Number of elements in LD_Array = 5
St_Array has 2 elements
St_Array[0] = 16
St_Array= 32