我有一個結構,我想將其字段傳遞給特定的函數。例如,我的結構中的一個字段是測驗1的學生測驗成績,「測驗1」。我想計算所有測試的平均值,最大值和最小值。我想爲每個計算創建一個函數,但是我不知道如何將結構的特定字段傳遞給給定的函數。這裏是我有:將結構字段傳遞給函數C
的結構:
struct studentData {
char name[30];
int quiz1; int quiz2;
int quiz3; int quiz4;
int mid1; int mid2;
int finalexam;
} ;
平均功能:
double calcFAverage(struct studentData *record, int reccount)
{
float sum_F,F_avg;
int k;
// calculate the score sums
for (k=0; k<reccount; k++)
{
sum_F += record[k].finalexam;
}
F_avg = sum_F/reccount;
return F_avg;
}
主
:
struct studentData record[100];
calcFAverage(record,reccount);
的reccount
變量保存的記錄數爲結構。但是,正如您所看到的,平均功能僅針對期末考試成績。我該如何做到這一點,以便我可以傳遞結構中的任何字段並獲得其平均值。現在我對每個領域都有一個平均的功能,我認爲這是一個很糟糕的做法。
對於純C,您需要傳遞一個偏移量,以便可以通過'*((int *)((char *)&record [k] + offset))'來檢索得分。如果你使用C++,你可以傳遞一個指向類成員的指針,像&studentData :: mid1 –
@ YakumoRan:這個建議有一個技術術語:Yuck! –