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