sizeof
-Operator
Gibt die Größe seines Operanden in Bezug auf die Größe des Typs char
aus.
Hinweis
Informationen zum sizeof ...
-Operator finden Sie unter Ellipsis und variadische Vorlagen.
Syntax
sizeof unary-expression
sizeof ( type-name )
Hinweise
Das Ergebnis des sizeof
-Operators ist vom Typ size_t
, ein integraler Typ, der in der Datei <stddef.h> definiert ist. Mithilfe dieses Operators können Sie es vermeiden, rechnerabhängige Datengrößen in Ihren Programmen anzugeben.
Der Operand für sizeof
kann wie folgt sein:
Ein Typname. Um
sizeof
mit einem Typnamen zu verwenden, muss der Name in Klammern eingeschlossen sein.Ein Ausdruck. Bei Verwendung mit einem Ausdruck kann
sizeof
mit oder ohne Klammern angegeben werden. Der Ausdruck wird nicht ausgewertet.
Wenn der sizeof
-Operator auf ein Objekt vom Typ char
angewendet wird, wird der Wert 1 zurückgegeben. Wenn der sizeof
-Operator auf ein Array angewendet wird, gibt er die Gesamtzahl von Bytes in diesem Array zurück, nicht die Größe des Zeigers, der vom Arraybezeichner dargestellt wird. Zum Abrufen der Größe des Zeigers, der durch den Arraybezeichner dargestellt wird, übergeben Sie ihn als Parameter an eine Funktion, die sizeof
verwendet. Beispiel:
Beispiel
#include <iostream>
using namespace std;
size_t getPtrSize( char *ptr )
{
return sizeof( ptr );
}
int main()
{
char szHello[] = "Hello, world!";
cout << "The size of a char is: "
<< sizeof( char )
<< "\nThe length of " << szHello << " is: "
<< sizeof szHello
<< "\nThe size of the pointer is "
<< getPtrSize( szHello ) << endl;
}
Beispielausgabe
The size of a char is: 1
The length of Hello, world! is: 14
The size of the pointer is 4
Wenn der sizeof
-Operator auf den Typ class
, struct
oder union
angewendet wird, ist das Ergebnis die Anzahl der Bytes in einem Objekt dieses Typs zuzüglich möglicher Abstände, die hinzugefügt werden, um Member an Wortgrenzen auszurichten. Daher stimmt das Ergebnis möglicherweise nicht mit der Größe überein, die durch Addieren der Speicheranforderungen der einzelnen Member berechnet wird. Die /Zp-Compileroption und das pack-Pragma beeinflussen die Ausrichtungsgrenzen für Member.
Der sizeof
-Operator gibt niemals 0 (null) aus, auch nicht für eine leere Klasse.
sizeof
Der -Operator darf nicht mit den folgenden Operanden verwendet werden:
Funktionen (Jedoch kann
sizeof
auf Zeigern auf Funktionen angewendet werden.)Bitfelder.
Nicht definierte Klassen.
Der
void
-Typ.Dynamisch zugeordnete Arrays.
Externe Arrays.
Unvollständige Typen.
In Klammern gesetzte Namen unvollständiger Typen.
Wenn der sizeof
-Operator auf einen Verweis angewendet wird, ist das Ergebnis das gleiche wie bei Anwendung von sizeof
auf das Objekt selbst.
Wenn ein Array ohne Größenangabe das letzte Element einer Struktur ist, gibt der sizeof
-Operator die Größe der Struktur ohne das Array zurück.
Der sizeof
-Operator wird häufig verwendet, um die Anzahl von Elementen in einem Array mithilfe eines Ausdrucks im folgenden Format zu berechnen:
sizeof array / sizeof array[0]
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für