There are two situations in which to use a type cast. The first use is to change
the type of an operand to an arithmetic operation so that the operation will be
The second case is to cast pointer types to and from void * in order to interface
with functions that expect or return void pointers. For example, the following line
type casts the return value of the call to malloc() to be a pointer to a foo structure.
struct foo *p = (struct foo *) malloc(sizeof(struct foo));