C++中,如果我們想要獲取不確定個數的參數進入函數,就可以使用va_list類型的變量


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錯誤,今天就犯了這個錯誤。

有了這個函數,我們就可以傳入不同個數的參數進行運算了,非常方便。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM