在C中,fread()具有void *的參數,該參數將被分配從文件讀取的下一個字節塊的值。我的理解是使用void *,以便可以爲該函數提供多種數據類型。但是,當我嘗試在我自己的函數中使用這種類型的參數時,似乎將值賦給void *是不允許的。將值分配給void *
例如:
void* ptr = malloc(sizeof(int));
int n = 5;
*ptr = n; //Error here
這給出了一個錯誤說無效不可分配。如果是這種情況,那麼在fread()中它是如何工作的?
可能的重複[賦值給解除引用的空指針](http://stackoverflow.com/questions/7081288/assign-values-to-a-dereferenced-void-pointer) – Barmar
@Barmar我看到這個,我沒有看到令人滿意的答案,也沒有解釋爲什麼它可以在fread()中使用,而不是其他函數。 – JDOdle
這些函數包含與那裏的答案類似的代碼。他們在解除引用前將指針轉換爲適當的類型。 – Barmar