void
Der Typ void kann nicht wie andere Typen für Variablen verwendet werden. Er wird in ganz bestimmten Situationen verwendet, um den Compiler das Verhalten von Code mitzuteilen. Je nach Situation bedeutet die Angabe void dann ungültig
, zu ignorieren
, unbekannt
oder leer
. Grundsätzlich kann der Typ void mit dem Begriff Nichts
übersetzt werden.
Details
Die häufigste Anwendung des Typs void findet sich bei der Angabe des Rückgabetyps einer Funktion.
|
Eine Funktion, die mit void deklariert wird, gibt keinen Wert zurück. In anderen Programmiersprachen nennt man dies auch eine Prozedur
, dieser Begriff ist jedoch in C und C++ nicht üblich. Wird bei solchen Funktionen trotzdem versucht, mittels der return-Anweisung einen Wert zurückzugeben, gibt ein C-Compiler eine Warnung aus: return with a value, in function returning void. In C++ ist die Rückgabe eines Wertes für eine Funktion mit void als Rückgabetyp nicht erlaubt und ergibt einen Fehler: return-statement with a value, in function returning void.
Der Grund, wieso C nur eine Warnung und keinen Fehler ausgibt liegt darin, dass für eine Funktion grundsätzlich immer Platz für einen Rückgabewert reserviert wird, egal ob nun ein Wert zurückgegeben wird, oder nicht. Der C-Compiler schreibt somit auf Wunsch des Programmierers einen Rückgabewert an diese Stelle, auch wenn die Funktion mit void deklariert wurde. Demgegenüber jedoch ist sowohl in C als auch in C++ das Ansprechen des Rückgabewertes einer Funktion ohne Rückgabewert nicht erlaubt und resultiert in der Fehlermeldung Void value not ignored as it ought to be. Der vermeindliche Rückgabewert wird als ungültig betrachtet.
Auch die Parameterliste einer Funktion kann mit void gekennzeichnet werden:
|
In diesem Falle bedeutet die Angabe von void, dass die Parameterliste explizit leer ist, bei einem Aufruf der Funktion somit keine Argumente erwartet werden. In C++ kann die Parameterliste der Funktion auch einfach leer gelassen werden, was genau dasselbe bedeutet. Durch die weite Verbreitung von C++ ist die Angabe void somit kaum mehr bei der Parameterliste anzutreffen. In C jedoch bedeutet eine leere Parameterliste, dass die Anzahl Parameter bei der Funktions-Deklaration nicht bekannt ist und somit bei einer späteren Definition durchaus anders sein kann. Durch die Angabe von void jedoch wird auch in C explizit die leere Parameterliste festgelegt.
Eine weitere Anwendung des Typs void findet man beim void-Pointer, dem Pointer auf einen unbestimmten Typ.