在電腦程式設計,一個可變參數函式是指一個函式擁有不定引數,即是它接受一個可變數目的參數。簡單來說,就是函式的參數個數可變,參數類型不定的函式。
不同的程式語言對可變參數函式的支持有很大差異。
基本介紹
- 中文名:可變參數函式
- 外文名:Variable parameter function
- 定義:一個擁有不定引數的函式
- 學科:計算機科學
簡介
C/C++中的舉例
#include <stdio.h>
#include <stdarg.h>
double average(int count, ...); /* 函式聲明,計算參數的平均值。直到參數為0時停止計算 */
int main(void) /* 測試代碼 */
{ double avg; avg = average(3, 2, 1, 5, 0); printf("%f\n", avg); return 0;
}
double average(int count, ...)
{ va_list ap; int i, cnt = 0; /* cnt 表示參數個數 */ double tot = 0; /* 參數的和 */ va_start(ap, count); for (i = count; i; i = va_arg(ap, int), cnt++) /* i為當前獲取參數的值 */ tot += i; va_end(ap); /* 將參數列表清空 */ return tot / cnt;
}
可變參數函式實現原理
int printf(const char* format,...)
printf("%d and %c,a,b");
聲明和定義
C++11/C++14中的舉例
#include <iostream>
using namespace std;
template<typename T>
T sum(initializer_list<T> il) { T data(0); for (T i : il) data += i; return data;
}
int main() { cout << sum( { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }) << endl; return 0;
}
JavaScript中的舉例
function test(){ // 不管函式是否聲明參數,所有的參數都會添加到arguments中,arguments以數組的形式將參數保存起來 var params = arguments; // 以數組的形式輸出 console.log(params);
};
test("a");// 結果:["a"]
test("a", 1);// 結果:["a", 1]
test("a", 1, function(){});// 結果:["a", 1, function (){}]