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!