我正在学习C多线程,发现了一些罕见的事情。
我知道将参数传递给线程必须使用指针。我发现了一个例子,但我不理解它。我会复制相关的行:
pthread_t tid[MAX_THREADS]
int n_veg
pthread_create(&tid[n],NULL,caracter,(void *)n_veg)
“caracter”显然是一个预定义函数。
那么,为什么我们要使用void指针转换而不是int指针转换?有什么相关的区别吗?
其次,为什么我们首先要使用指针转换?我们不能像第一个参数一样使用“&n_veg”吗?
提前感谢您的帮助。
*(int *)n_veg
:要使用void *
,你需要将其转换为实际类型,因此需要(int *)
,然后*
解引用指针以获取值。 - casablanca