我无法找到我的“问题”的答案。
我创建了一个函数,它接受不同数量的整数('findMinVal(int x, ...)')并返回所有调用中的最小数字。现在我的程序直接通过代码获取参数:
int main(){
printf("\nThe minimal number in each call for \"findMin\" is : \n");
findMinVal(90,78,5,20,-1);
findMinVal(70,40,2,-1);
findMinVal(40,30,-1);
return 0;
}/* main */
我希望它接受文件中的变量,但我不知道如何做到这一点..? 任何帮助将不胜感激。
最佳答案
创建可变参数列表的唯一标准方法是调用接受它并一次传递所有参数的函数。
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);
}
}
无论如何,如果可能的话,应该避免使用可变参数。
关于c - 如何填充 va_list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16872832/