C中可變引數函式

2021-08-28 04:26:14 字數 1194 閱讀 6735

先說明規則:

1.函式的可變引數中必須有一條確定的引數(至少一條);

2.可變引數列表必須從頭開始訪問,訪問到尾部;

3.可變引數列變不能確定引數數目;(編譯時才能確定)

4.可變引數的變數型別是不確定的,編譯時必須確定引數型別,變數的引數型別不確定時,函式的結果未知。

引數使用方法:

#include 

va_list argp; //這裡取得引數列表;

va_statrt(argp,str); //使用va_start來得到引數列表的指標,用於指向第乙個引數

va_arg(argp,int); //使用va_arg()函式,返回引數的值,然後指標指向下乙個引數;

va_end(argp); //使用va_end()函式,將argp中的引數置空;

我認為函式的可變引數有兩種使用方法:

1.最少需要乙個引數,用這個引數來指定引數列表的長度;

比如:fun(int num,…) 在這裡用num來確定引數的各數

使用時用for迴圈,依次讀入引數,請看下面的例項:

// main.c

int sum(int num,...);

sum(10,1,2,3,4,5,6,7,8,9,10);

//函式定義

int sum(int n,...)

va_end(list);

return sum;

}

2.設定乙個標記位,用來結束while迴圈,也被稱之為哨兵

main.c

print("start","abc","def","cba","");
這裡的「」空字串就起到了哨兵的作用,用於跳出while迴圈

//函式定義

void print(char* str,...)

va_end(list);

}

整數的話,可以使用-1來跳出迴圈

使用函式時,printint(100,1,2,3,4,5,-1);

int printint(int max,...)

va_end(args);

return temp;

}

函式中的可變引數c

在資料的大小,個數,型別是未知的情況下,會用到可變引數。include include include 標準引數,解決可變引數問題 intadd int num,va end argp 結束讀取 return res void main include include include 標準引數,解決...

C 中函式中的可變引數

using system using system.collections.generic using system.linq using system.text vfun values console.writeline vfun aaa bbb ccc console.writeline say...

C 引數可變函式

前幾天突然想到,c 中有關不定引數的函式平時沒有用過,查了一下該怎麼寫,記錄下來以免以後忘記。int sum int count,int sum 0 va list args va start args,count for int i 0 i其中,第乙個引數count表示後面引數個數,可以理解為 代...