Das Schlüsselwort void wird in drei Zusammenhängen verwendet:
Ein als void deklarierter Zeiger kann auf die Adresse jeder Variablen gesetzt werden, die nicht als const oder volatile deklariert ist. Zugriffe über solche Zeiger sind nur nach einer expliziten Typumwandlung (casting) möglich, die dem Compiler mitteilt, wie viele Bytes welcher Struktur geschrieben bzw. gelesen werden sollen. Hinsichtlich der Umwandlung in andere Zeigertypen gibt es bei void-Zeigern keine Einschränkungen.
Ein als void deklarierter Zeiger kann auf die Adresse von Funktionen gesetzt werden, nicht aber auf die Adresse von Elementen einer Klasse in C++.
Als Datentyp einer Variablen ist void nicht verwendbar.
Beispiel:
void vobject; /* !!! nicht zulaessig */
void *pv; /* OK: Zeiger auf ein beliebiges Objekt */
int *pint; int i;
void main(void) /* main setzt keinen Rueckkehrcode */
{ /* main besitzt keine Aufrufparameter */
pv = &i; /* OK */
pint = (int *)pv; /* (int *) in C wahlweise,
in C++ erforderlich */
}
Bemerkungen:
#define assert(EX) ((EX) ? ((void)0) : _assert("EX", __FILE__, __LINE__))
Wenn die Bedingung EX erfüllt ist, dann ist nichts zu tun,
ansonsten ist die Funktion _assert aufzurufen (AIX).