2015-10-13 54 views
1

所以我的c代碼是不正確的讀取數組被傳遞到我創建的庫函數。出於某種原因,輸出尺寸爲4,尺寸爲10等時,請幫助我完成此項工作。該庫包含在文件頭中。測試文件庫文件,數組沒有正確讀取問題在c

int main() 
{ 
// data of array 
double input[] = {30.0, 90.0, 100.0, 84.0, 72.0, 40.0, 34.0, 91.0, 80.0, 62.0}; 
// size of array 
int size = sizeof(input)/sizeof(double); 

// getting information from library based on data of array 
printf("The mean is: %.2f", calculateMean(size, input)); 
} 

//這是庫 //返回數據

double calculateMean(int totnum, double data[]) 
{ 

double total = 0; 
int size = sizeof(data)/sizeof(double); 


for(int i=0; i<size; i++) 
{ 
    total += data[i]; 

} 
return (double)total/size; 
} 
+0

請記住,數組作爲指針傳遞給函數。 – teppic

+0

我該怎麼做。請澄清。 – codegeek123

+0

'return(double)total/size;' - 演員不需要。 –

回答

1

的平均值在calculateMean您使用

int size = sizeof(data)/sizeof(double); 

得到的data大小。但是數組被傳遞爲一個指針。 所以你size可能會(在大多數平臺sizeof(double) > sizeof(double*)作爲)

您傳遞totnum的功能,但不使用它初始化爲0。使用它可以解決問題

double calculateMean(int totnum, double data[]) 
{ 

    double total = 0; 
    for(int i=0; i<totnum; i++) 
    { 
     total += data[i]; 

    } 
    return (double)total/totnum; 
} 
0

在您的載體作用double calculateMean(int totnum, double data[])你不需要重新計算size當你經過totnum使用它,而不是size -

int size = sizeof(data)/sizeof(double); // useless in function. 

這不應該在任何函數來完成當傳遞數組時,因爲它計算爲 -

sizeof(double *)/sizeof(double) // computing size uncorrect.