簡體   English   中英

從void *到int的排版,反之亦然

[英]Typcasting from void* to int and vice versa

我最近一直在研究線程,在這里有一個問題。 這是我的代碼片段:

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

然后在線程問好中,我打印從上面傳遞過來的值i。

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

問題是:盡管我需要將i輸入轉換為(void *),但為什么我可以成功打印出i而不必將其重新轉換為int呢?

您可能在32位計算機上,其中的指針和int具有相同的寬度。 因此,打印得很好純屬巧合。

這確實是一種糟糕的編碼風格,如果您想移植代碼,會給您帶來很多麻煩,但是卻絲毫沒有好處。 只是不要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM