Heim > Backend-Entwicklung > C++ > Hauptteil

Wie groß ist „void' in C?

Mary-Kate Olsen
Freigeben: 2024-11-19 17:25:03
Original
808 Leute haben es durchsucht

What is the Size of

Frage: Die undefinierte Größe von „void“ verstehen

In der C-Programmierung steht das Schlüsselwort „void“ für das Fehlen eines Typs. Dies wirft die Frage auf: Wie groß ist „void“?

Antwort:

Der Typ „void“ hat in C keine definierte Größe. Es handelt sich nicht um einen Ein gültiger Typ für Objekte oder Zeiger. Der Versuch, ihn als solchen zu verwenden, würde daher zu einem Kompilierungsfehler führen. Insbesondere ist die Anweisung:

void n;
Nach dem Login kopieren

ungültig, da versucht wird, eine Variable vom Typ „void“ zu deklarieren, was nicht zulässig ist.

Erweiterung: Zuordnung und Zeigerarithmetik mit „ void"-Zeiger

Obwohl „void" keine Größe hat, kann es als Typ für Zeiger verwendet werden. Solche Zeiger verweisen jedoch nicht auf einen bestimmten Datentyp oder eine bestimmte Datengröße.

Die Anweisung:

void *p = malloc(sizeof(void));
Nach dem Login kopieren

führt zu einem Fehler bei der Kompilierung, da versucht wird, Speicher für eine „void“ zu reservieren „ Typ ist unsinnig. Die Funktion malloc erfordert einen gültigen Datentyp, um Speicher zuzuweisen.

In GCC wird der Ausdruck sizeof(void) überraschenderweise als 1 ausgewertet. Auch wenn dies so aussehen mag, als würde es „void“ eine Größe zuweisen, ist dies lediglich der Fall ein Implementierungsdetail, auf das man sich nicht verlassen sollte.

Außerdem ist die Zeigerarithmetik p auf einem „void“-Zeiger undefiniert und sollte nicht verwendet werden. Dies liegt daran, dass der Datentyp, auf den p zeigt, unbekannt ist, sodass nicht bestimmt werden kann, was eine Erhöhung des Zeigers bedeuten würde.

Das obige ist der detaillierte Inhalt vonWie groß ist „void' in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage