Void is nothing. If a function has void as parameters or returns void, it has nothing as parameters or returns nothing.
Void *, on the other hand, is also nothing. Well, a pointer to nothing. It's meaningless. You can't do anything with it without typecasting it to something else. It's a valid pointer just like any other pointer, but C doesn't know what's on the other end. You've got to tell it by typecasting:
uint32_t ui32TestNo = 12345678; //store 12345678 into a 32-bit unsigned integer
void * vPointer = ( void * ) &ui32TestNo; //Store the address of the integer to a void, meaningless pointer
uint8_t * ui8Pointer = ( uint8_t * ) vPointer; //Typecast the pointer to something meaningful - an 8-bit unsigned integer for now.
printf( "%d\n", ui8Pointer[ 0 ], ui8Pointer[ 1 ], ui8Pointer[ 2 ], ui8Pointer[ 3 ] ); //Show each of the four bytes in the 32-bit number as individual 8-bit numbers. We've typecasted the number from one type to another.
Athlon64 2.7gHz->OC 3.9gHz, 31C, MSi 9500GT->OC 1gHz core/2gHz memory, 48C, 4Gb DDR2 667, 500Gb Seagate + 80Gb Maxtor + 40Gb Maxtor = 620Gb, XP Home
Air cooled, total cost £160