/*------------------------------------------------------------------*/ /* voidpointers.c (Void Pointers) */ /*------------------------------------------------------------------*/ #include int main(int argc, char *argv[]) { 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; } /* $ gcc -Wall -ansi -pedantic -o voidpointers voidpointers.c voidpointers.c: In function `main': voidpointers.c:21: warning: assignment from incompatible pointer type voidpointers.c:22: warning: assignment from incompatible pointer type voidpointers.c:25: warning: dereferencing `void *' pointer voidpointers.c:25: invalid use of void expression voidpointers.c:29: warning: dereferencing `void *' pointer voidpointers.c:29: invalid use of void expression */