Fat*_*ebi 5 c pointers pthreads
我在C中有指针问题,这是C中的一个线程示例.这段代码是用"高级Linux编程"一书编写的:
void* print_xs (void* unused)
{
while (1)
fputc (‘x’, stderr);
return NULL;
}
Run Code Online (Sandbox Code Playgroud)
和:
int main()
{
pthread_t thread_id;
pthread_create (&thread_id, NULL, &print_xs, NULL);
while (1)
fputc (‘o’, stderr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么print_xs是void*?
我找到了答案,但对我来说还不够清楚.答案:这声明了一个指针,但没有指定它指向的数据类型
它与返回值有关吗?
还为什么void*数据类型用于"未使用"(void*unused)?
我不确定为什么在pthread_create中的print_xs之前使用"&"?这是正确的说:pthread_create在另一个库中,我们想告诉它运行pthread_create函数,但它不知道这个函数在哪里,所以我们告诉它函数的地址.
void指针(void*)是一个没有与之关联的数据类型的指针.void指针可以保存任何类型的地址,并且可以存储为任何类型.
例如:
int a = 10;
char b = 'x';
void *unused = &a; // void pointer holds address of int 'a'
unused = &b; // void pointer holds address of char 'b'
Run Code Online (Sandbox Code Playgroud)
是的,void* print_xs()有返回类型的void指针.
在pthread_create (&thread_id, NULL, &print_xs, NULL); pthread_create函数传递的地址thread_id和print_xs