2012-10-11 30 views
0

我從來沒有用C編程,所以請誰能告訴我這是什麼建築做:Ç了funcName(void *的個體經營)

void funcName(void * self) 
{ ... } 

據我瞭解 同樣,funcname接收指針未知數據和該函數接收什麼

但爲什麼有一個void *自

+4

您可能需要閱讀此:http://stackoverflow.com/questions/692564/concept-of-void-pointer-in-c-programming –

回答

4

這是需要一個空指針的函數 - 沒有一個特定類型的指針。無效指針類型可讓您將指向任何數據類型的指針傳遞給已聲明的函數。在讀取/寫入數據之前,函數必須將指針轉換爲適當的類型,或者將指針傳遞給其他函數,該函數使用void*

任何指針可以轉換爲void*,含蓄或明確。例如,你可以調用funcName這樣的:

int *ptr = malloc(100*sizeof(int)); 
funcName(ptr); // No error 

然後,您可以調用同一個函數用不同的指針類型:

struct mystruct_t *ptr = malloc(100*sizeof(mystruct_t)); 
funcName(ptr); // Again, no error 

從指針,self的名稱來看,它很可能該函數試圖模仿C中可用的構造函數來編寫面向對象的編程風格。而不是像構件函數那樣隱式地將指針傳遞給數據,這種風格將顯式地傳遞一個指向數據的指針。指針通常被稱爲thisself

相關問題