C 可變參數


參考鏈接: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));

}


免責聲明!

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



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