/*--------------------------------------------------------------------*/ /* voidpointers.c */ /* Author: Bob Dondero */ /* A nonsensical program to illustrate void pointers */ /*--------------------------------------------------------------------*/ #include int main(void) { int i = 5; double d = 5.5; int *pi; double* pd; void *pv; pi = &i; /* OK */ printf("%d\n", *pi); /* OK */ pd = &d; /* OK */ printf("%f\n", *pd); /* OK */ pi = &d; /* Compiletime warning */ pd = &i; /* Compiletime warning */ pv = &i; /* OK */ printf("%d\n", *pv); /* Compiletime error */ printf("%d\n", *(int*)pv); /* OK */ pv = &d; /* OK */ printf("%f\n", *pv); /* Compiletime error */ printf("%f\n", *(double*)pv); /* OK */ pv = &i; /* OK */ d = *(double*)pv; /* Runtime error */ return 0; } /* $ gcc217 voidpointers.c -o voidpointers voidpointers.c: In function `main': voidpointers.c:23: warning: assignment from incompatible pointer type voidpointers.c:24: warning: assignment from incompatible pointer type voidpointers.c:27: warning: dereferencing `void *' pointer voidpointers.c:27: error: invalid use of void expression voidpointers.c:31: warning: dereferencing `void *' pointer voidpointers.c:31: error: invalid use of void expression */