2017-04-16 14 views

回答

2

你誤解的void * ptrfread聲明的目的。

http://en.cppreference.com/w/c/io/fread

緩衝器 - 指針到讀對象存儲

首先陣列,參數必須是一個有效的指針,其中的對象可以被存儲。使用

void *ptr; 
fread(ptr,1,100,file); 

將導致未定義的行爲,因爲ptr沒有指向任何有效的東西。

其次,參數類型的原因是void*允許您從流中讀取各種數據。例如。

// Read an integer 
int i; 
fread(&i, sizeof(int), 1, file); 

// Read 10 integers 
int a[10]; 
fread(a, sizeof(int), 10, file); 

// Read a double 
double d; 
fread(&d, sizeof(double), 1, file); 
相關問題