The void
type is an incomplete type that cannot be
completed.
The void
type has three important uses:
The following example shows how void
is used to define
a function, with no parameters, that does not return a value:
void message(void) { printf ("Stop making sense!"); }
The next example shows a function prototype for a function that accepts a pointer to any object as its first and second argument:
void memcopy (void *dest, void *source, int length);
A pointer to the void
type has the same representation
and alignment requirements as a pointer to a character type.
The void *
type is a derived type based on
void
.
The void
type can also be used in a cast expression to
explicitly discard or ignore a value. For example:
int tree(void); void main() { int i; for (; ; (void)tree()){...} /* void cast is valid */ for (; (void)tree(); ;){...} /* void cast is NOT valid, because the */ /* value of the second expression in a */ /* for statement is used */ for ((void)tree(); ;) {...} /* void cast is valid */ }
A void
expression has no value, and cannot be used in
any context where a value is required.