我最近一直在研究线程,我在这里有一个问题。这是我的代码片段:
pthread_create(&thread[i], NULL, hello, (void *) i);
在线程问候中,我打印了上面传递的值i。
void *hello(void *n)
{
printf( " %d " , n);
pthread_exit(NULL);
}
问题是: 虽然我需要将类型转换为(void *),但为什么我可以成功打印出i而无需将其重新转换为int?
答案 0 :(得分:1)
你可能在32位机器上,指针和int
具有相同的宽度。因此,打印效果非常巧合。
这是非常糟糕的编码风格,如果您想要移植代码,会给您带来很多麻烦,但根本不会给您带来任何好处。只是不要。