The error is pretty clear. The first argument should be a pointer rather than an integer.
man pthread:
int pthread_create(pthread_t *restrict thread,
const pthread_attr_t *restrict attr,
void *(*start_routine)(void*), void *restrict arg);
The pthread_create() function shall create a new thread, with
attributes specified by attr, within a process. If attr is NULL, the
default attributes shall be used. If the attributes specified by attr
are modified later, the thread's attributes shall not be affected. Upon
successful completion, pthread_create() shall store the ID of the cre-
ated thread in the location referenced by thread.
Re-read that last sentence before sticking an ampersand before id in your pthread_create call. EDIT2: you will also have to define id as a pthread_t.
EDIT:
Actually, there are two other issues on the same line: start_routine needs to be a function that takes one argument rather than two, but worst of all this would be a fork bomb since you're passing the same function you're calling from!