Как уже было сказано (void *), они не нужны, и их следует избегать, пока вы не узнаете, что делаете. В соответствующем объявлении функции это просто означает, что функция берет указатель на что-то, но не имеет значения, что это за тип «что-то».
* 1003 Е.Г. *
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
static void doit(int *); // Function Prototypes. VERY IMPORTANT.
static void doitAgain(void *);
int main(int argc, char *argv[]) {
int i = 0x12345;
doit(&i);
doitAgain(&i);
}
static void doit(int *b)
{
int *foo = malloc(sizeof(int));
memcpy(foo, b, sizeof(int));
fprintf(stdout, "foo is 0x%x\n", *foo);
}
static void doitAgain(void *b)
{
int *foo = malloc(sizeof(int));
memcpy(foo, b, sizeof(int));
fprintf(stdout, "foo is 0x%x\n", *foo);
}
А когда мы его запустим:
$ make
cc main.c -o main
$ ./main
foo is 0x12345
foo is 0x12345