學習 如何在c函式引數列表中輸入多個值?

2022-06-08 12:00:15 字數 1057 閱讀 3597

1.不借助函式庫

void fun(int len,...)else{

printf("%s ",s);

//int型例子2【多餘的例子可以不看】

#define end_target 99999999 //比如設定乙個end_target作為結束標誌,每次引數最後都帶乙個

fun(5,2,3,4,5,6,end_target);【第乙個引數為輸入引數列表長度,便於獲取引數長度,當然也可以不使用它(請看int型例子2)】

void fun(intstart_target,...){//不過此時start_target為廢變數了

va_list ap;//新建引數列表資訊陣列 其實va_list實質為char *

va_start(ap,start_target);

int val;

while(1){ 

val=va_arg(ap,int);//獲取引數資訊,第二個引數為引數列表的資料型別(注意:如果引數列表存'a'、'c'這種字元型右值,會被識別為int型的),返回值要與引數列表資料型別一致

if(end_target==val){  //取到結束標誌就結束

break;

printf("%d ",val);

va_end(ap);//ap置為null

注意:引數列表可以不與va_start(引數1,引數2《引數列表位置》)引數2不同型別

va_list函式的實質

#define va_list char *

#define va_start(p, first) (p = (va_list)&first + sizeof(first))

#define va_arg(p, next) (*(next*)((p += sizeof(next) ) - sizeof(next)))

#define va_end(p) (p = (va_list)null)

參考:

C可變引數列表函式

c語言中可以定義接收不同的引數的函式 可變引數的函式可以接收不同數目的引數,但是需要注意的是c語言中函式的引數個數不能超過5個。可變引數的函式的原型如下int narg sum int arg num,在引數列表中至少要有乙個命名的引數。可變引數函式的實現需要用到va start va arg va...

C 學習筆記(函式 如何在函式中傳入傳出引數)

1 函式引數傳遞陣列 關鍵字params class program static int sunvals param int vals int sum 0 foreach int val in vals sum val return sum static void main string args...

C 之建構函式 引數列表 析構函式

參考自 兩種例項化方式都是預設建構函式 紅字部分即為初始化列表 乙個引號,多個引數用逗號隔開,賦值用 初始化列表特性 其先於建構函式執行 其只能用於建構函式 其可以同時初始化多個資料成員 拷貝建構函式的特點 當使用者沒有定義建構函式時,編譯器會自動生成乙個預設的拷貝建構函式 建構函式也是如此 當採用...