1. 概念
常用如printf函式:
它的引數並不是固定個數的,而在呼叫時根據情況確定
2. c中的實現
用到了
va_list:每次指向乙個可變的引數
va_start:初始化va_list變數,使其指向第乙個可變引數
va_end:清理
3. 書上的兩個簡單例子
(1)
int print_arg(int nums,...);nums是字串個數,後面是不固定個數的字串,以null結尾
1(2)printf的簡單實現int print_arg(int
nums,...)214
va_end(ap);
15return
n;16 }
這裡只處理 %%、%d、%lf、%s這些
#include #include簡單測試:#include
int my_printf(const
char *format,...)
;
va_start(ap,format);
c = *format;
while('
\0' !=c)
}else
c = *(++format);
}va_end(ap);
return1;
}
C 可變引數
include c 對於函式支援可變形參,它通過 來表示未知個數的形參,通過va 系列函式進行操作。va list是乙個巨集,由va start和va end界定。typedef char va list void va start va list ap,prev param type va arg...
C 可變引數
寫 之前要先介紹一下可變引數的備用知識 c函式要在程式中用到以下這些巨集 void va start va list arg ptr,prev param type va arg va list arg ptr,type void va end va list arg ptr va在這裡是varia...
C可變引數 printf(巨集處理可變引數)
x86平台下的巨集定義 typedef char va list 記憶體對齊 與sizeof int 對齊 0 sizeof n 4,intsizeof n 4 4 sizeof n 8,intsizeof n 8 define intsizeof n sizeof n sizeof int 1 s...