製作可變參數列表的唯一標準方法是對接受它一次傳遞所有參數的函數進行調用。
findMinValInArray(int n, int a[]) {
switch(n) {
case 1: return findMinVal(a[0], -1);
case 2: return findMinVal(a[0], a[1], -1);
case 3: return findMinVal(a[0], a[1], a[2], -1);
case 4: return findMinVal(a[0], a[1], a[2], a[3], -1);
case 5: return findMinVal(a[0], a[1], a[2], a[3], a[4], -1);
case 6: return findMinVal(a[0], a[1], a[2], a[3], a[4], a[5], -1);
case 7: return findMinVal(a[0], a[1], a[2], a[3], a[4], a[5], a[6], -1);
case 8: return findMinVal(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], -1);
case 9: return findMinVal(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7],
a[8], -1);
case 0xA: return findMinVal(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7],
a[8], a[9], -1);
case 0xB: return findMinVal(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7],
a[8], a[9], a[0xA], -1);
case 0xC: return findMinVal(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7],
a[8], a[9], a[0xA], a[0xB], -1);
case 0xD: return findMinVal(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7],
a[8], a[9], a[0xA], a[0xB], a[0xC], -1);
case 0xE: return findMinVal(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7],
a[8], a[9], a[0xA], a[0xB], a[0xC], a[0xD], -1);
}
}
無論如何,如果可能的話應該避免可變參數。
您不能手動填充'va_list'。 –
重複的問題:http://stackoverflow.com/questions/988290/populating-a-va-list。簡而言之,這是一個糟糕的主意,你應該使用類似動態構建的int數組與計數器(即在readFile中:構建數組,計數項目並將計數和數組指針傳遞給您的findMinVal()函數。 – wldsvc
It看起來像最小值是'-1',否?; v) – Potatoswatter