In C void
wird für mehrere nicht miteinander verbundene Dinge verwendet. Je nachdem, wofür es verwendet wird, kann seine Bedeutung ein Einheitentyp, ein leerer Typ oder etwas anderes sein.
Wenn void
es von sich aus verwendet wird (im Gegensatz zu void*
einem Zeiger auf void), ist es ein Einheitentyp, dh ein Typ mit einem einzelnen Wert. Von zurückgegebenen Funktionen void
wird gesagt, dass sie „nichts zurückgeben“. Dies bedeutet jedoch, dass sie keine Informationen zurückgeben. Sie geben Informationsbits zurück, was bedeutet, dass sie einen Wert eines Typs zurückgeben, der verschiedene Werte enthält, dh einen Einheitentyp.020=1
Dies ist kein leerer Typ: Eine Funktion, die einen leeren Typ zurückgibt, kann keinen Wert zurückgeben, da es keinen Wert dieses Typs gibt. Eine Funktion, deren Rückgabetyp leer ist, kann nur eine Endlosschleife ausführen, das Programm abbrechen oder eine Ausnahme auslösen ( longjmp
) (oder auf andere Weise festlegen, dass keine Rückgabe erfolgt, z. B. durch Übertragung der Steuerung auf einen anderen Thread oder Prozess mit Funktionen, die über Standard C hinausgehen). Um die Dinge nicht zu verwirren, ist es in C üblich, void
anstelle eines leeren Typs einen leeren Typ zu verwenden (C hat keinen leeren Typ).
Der void
Typ erfordert Speicherbits. Da C darauf besteht, dass jedes Objekt eine ganze, von Null verschiedene Anzahl von Speicherbytes belegt, ist es verboten, ein Objekt vom Typ zu erstellen , und es gibt eine spezielle Syntax, um den Wert zurückzugeben (eine Anweisung, bei der der Wert weggelassen wird). Es gibt keine Syntax, die den Wert von type liefert , aber dieser Wert ist immer dann vorhanden, wenn eine Funktion, deren Rückgabetyp "return" ist, zurückgibt.0void
void
return
void
void
C hat keinen Bottom-Typ im Sinne eines möglichen Typs. Auch unvollständige Typen geben die allgemeine Natur ihrer Werte an, z. B. Zeiger oder Strukturen oder Vereinigungen oder Funktionen. Ist void*
aber ein Zeiger auf einen beliebigen Nicht-Funktionstyp: Es ist das kleinste Element der Algebra von Objektzeigertypen, dh es ist der unterste Objektzeigertyp. Im Gegensatz zum allgemeinen Fall, T*
dass T
es sich bei einem Typ um einen nicht leeren Typ handelt, void*
handelt es sich nicht um den Typ der Zeiger auf einen Wert vom Typ void
, sondern um den Typ der Zeiger auf einen Wert vom nicht angegebenen Typ.