C++中如果我們想要獲取不確定個數的參數進入函數,可以使用下面這種方法:
1 1 #include <cstdarg> //這里我們添加進來所需要的類庫<csrdarg> 2 2 3 3 // first argument is int count of remaining args 4 4 // ... remaining args are doubles for average 5 5 6 6 double average(const int count, ...) 7 7 { 8 8 va_list ap; //在這里我們定義一個va_list類型的變量 9 9 int i; //在這里我們定義一個可以在下方循環使用的整型變量 10 10 double total = 0.0; //在這里我們定義一個浮點數保存所有的參數的和 11 11 va_start(ap, count); //在這里我們獲得可變參數列表的第一個參數的地址,括號里面第一個參數是類型為va_list的指針,第二個參數是可變類型最左邊的參數,此處是count 12 12 13 13 for(i = 0; i < count; ++i) { 14 14 total += va_arg(ap, double); //在這里我們返回可變的參數,括號里面第二個參數是你想要返回的參數類型 15 15 } 16 16 17 17 va_end(ap); //在這里我們可以清空可變參數列表va_list 18 18 return total / count; 19 19 20 20 }
然后我們就可以在主函數中調用這些函數了,效果很不錯
void main(int argc, char ** argv){ printf("The value of avarage is %lg\n", average(3, 7.3, 9.5,8.5)); //結果為8.334 printf("The value of avarage is %lg\n", average(2, 4.6, 5.4)); //結果為5 }
要記住,函數定義要放在主函數的前面,不然會出現C3861錯誤,今天就犯了這個錯誤。
有了這個函數,我們就可以傳入不同個數的參數進行運算了,非常方便。