我想學習C多線程,並且我已經看到了一些罕見的東西。如何將參數傳遞給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? 對不起,如果第二個問題是愚蠢的,這是我編程的第二年,直到本週才使用java:/ – bluehallu 2010-11-19 00:43:11
@Hallucynogenyc:是的。如果你傳入一個真實的指針,你可以使用指針改變原始值。關於'*(int *)n_veg':要使用'void *',您需要轉換爲實際類型,因此需要轉換爲'(int *)',然後'*'將引用指針以獲取值。 – casablanca 2010-11-19 00:45:00
全部清楚。非常感謝你! – bluehallu 2010-11-19 00:47:56