„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie groß ist „void“ in C?

Wie groß ist „void“ in C?

Veröffentlicht am 22.12.2024
Durchsuche:864

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 ist keine 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;

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

Erweiterung: Zuordnung und Zeigerarithmetik mit „void“-Zeigern

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

Die Anweisung:

void *p = malloc(sizeof(void));

Ergebnisse in einem Kompilierzeitfehler, weil der Versuch, Speicher für einen „void“-Typ zu reservieren, unsinnig ist. Die Funktion malloc erfordert einen gültigen Datentyp, um Speicher zu reservieren.

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 für einen „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.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3