C 可變引數

2022-07-03 07:09:07 字數 1266 閱讀 4393

1.  概念

常用如printf函式:

它的引數並不是固定個數的,而在呼叫時根據情況確定

2. c中的實現

用到了

va_list:每次指向乙個可變的引數

va_start:初始化va_list變數,使其指向第乙個可變引數

va_end:清理

3. 書上的兩個簡單例子

(1)

int print_arg(int nums,...);
nums是字串個數,後面是不固定個數的字串,以null結尾

1

int print_arg(int

nums,...)214

va_end(ap);

15return

n;16 }

(2)printf的簡單實現

這裡只處理 %%、%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...