Heim >Backend-Entwicklung >C++ >Sagt uns „sizeof(void)' die Größe des Void-Typs in C oder C?

Sagt uns „sizeof(void)' die Größe des Void-Typs in C oder C?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-03 20:05:27982Durchsuche

Does `sizeof(void)` tell us the size of the void type in C or C  ?

Größe des schwer fassbaren Hohlraums

Frage:

Können wir die Größe des Hohlraumtyps in C oder C bestimmen? ? Betrachten Sie den folgenden Code:

void *p = malloc(sizeof(void));
Erweiterung: Wenn sizeof(void) in GCC 1 zurückgibt, wird der Zeiger p nach p auf 0x2346 erhöht, wenn p ursprünglich 0x2345 hatte?

Antwort:

Die Leere Dem Typ fehlt grundsätzlich die Größe, was den Ausdruck sizeof(void) bedeutungslos macht und zu einem Kompilierungsfehler führt. In C ist dies strengstens verboten.

Unerwartete Entdeckung:

Überraschenderweise ergibt sizeof(void) beim Kompilieren in GNU C 1. Dieses Verhalten ist jedoch begrenzt zu GNU C und wird in C oder anderen nicht beobachtet Implementierungen.

Auswirkungen:

Trotz des unerwarteten Rückgabewerts in GNU C ist es wichtig zu beachten, dass void ein Typ ohne Größe bleibt. Zeiger auf void, wie etwa p im Beispiel, sind echte Zeiger und können wie jeder andere Zeiger inkrementiert werden. Der Inkrementierungsvorgang in der Erweiterungsfrage verhält sich wie erwartet, wobei p auf die nächste verfügbare Speicheradresse zeigt.

Das obige ist der detaillierte Inhalt vonSagt uns „sizeof(void)' die Größe des Void-Typs in C oder C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn