參考鏈接:https://www.runoob.com/cprogramming/c-variable-arguments.html
怎樣讓函數接受不同個數的參數呢,可以通過stdarg.h頭文件提供的函數和宏來實現。此頭文件提供了實現可變參數功能相關的函數和宏。
可變參數的形式
//定義
int func(int num ,...){//真真的就是這樣定義的,就是有省略號,前面除了表示接受個數的num外,還可以自定義其他參數
……
}
//使用
result=func(2,a1,a2);//在使用這個函數的時候,第一個值必須時int類型,代表這次傳遞參數的個數
過程
#include <stdio.h>
#include <stdarg.h>
int add(int num ,...){
//在函數中定義一個va_list類型變量,該類型是由stdarg.h頭文件中定義的
va_list valist;
int result =0;
//使用 add()中的int 參數和va_start宏來初始化va_list類型變量為一個參數列表,宏va_start是一個定義在stdarg.h中的函數
va_start(valist,num);//初始化后會把所有接收到的可變參數都放在了valist中
//使用va_arg宏和va_list類型變量來訪問參數列表中每一個項
int i;
for(i=0;i<num;i++){
result+=va_arg(valist,int);//i並不參與
}
//當對可變參數的訪問結束后,使用va_end來清理賦予va_list類型變量的內存
va_end(valist);
return result;
}
int main(){
//使用
printf("結果是:%d",add(2,10,10));
printf("結果是:%d",add(3,10,10,10));
}
