键入从void *到int的Casting,反之亦然

时间:2015-04-11 20:20:57

标签: c casting pthreads

我最近一直在研究线程,我在这里有一个问题。这是我的代码片段:

pthread_create(&thread[i], NULL, hello, (void *) i);

在线程问候中,我打印了上面传递的值i。

void *hello(void *n)
{ 
   printf( " %d " , n);
   pthread_exit(NULL);
}

问题是: 虽然我需要将类型转换为(void *),但为什么我可以成功打印出i而无需将其重新转换为int?

1 个答案:

答案 0 :(得分:1)

你可能在32位机器上,指针和int具有相同的宽度。因此,打印效果非常巧合。

这是非常糟糕的编码风格,如果您想要移植代码,会给您带来很多麻烦,但根本不会给您带来任何好处。只是不要。