void *task(void *p)
{}
pthread_create(&id, 0, task, (void *)i); 中的(void *)i是什么意思???
就是把这个指针转换成void *
因为pthread_create为了通用的考虑,最后一个参数要求是void *,而不是int *。为了通过编译,必须这么做。
如果参数是int *,就不通用了。你这里能传了,但是如果要传char,float等等就不行了。所以定义成void *的。
问题补充:这个i 是 int 类型的
void *
空指针类型,任何指针都可以转换成空指针类型,空指针类型也可以指向任何类型
类型转换,跟线程函数原型有关,这样,你可以传递任意类型,然后线程函数中再转换回来