C語言(變參函式)

2021-07-09 18:38:27 字數 474 閱讀 6799

c語言雖然沒有c++的函式過載特性,但也可以實現變參,但要保證第乙個引數資訊的完整性。

拓展:定義變參函式時,第乙個引數一般是字串,攜帶後續變參的型別和數量資訊,變參使用三點來表示,如:

void sumup(const char *info, ...);

再使用va_list、va_start()、va_arg()和va_end()來索引和控制這些變參,如:

va_list p;

va_start(p, info);

va_arg(p, int);

va_end(p);

假設呼叫sumup()時,引數是這樣的:sumup("someinfo", 1, 'a', 0.618); 那麼sumup()就可以了根據第乙個字串引數someinfo來索引這些引數,當然,someinfo的具體格式約定我們可以自定義,就跟printf()和scanf()函式一樣,比如使用#i代表int,#@代表字串都可以,是自定義的。

C語言變參使用

c語言中有很多變參的使用,例如printf 的原型是int printf const char fmt,那麼c語言是如何解析和處理這些變參的呢?下面進行簡單的總結 c語言中定義了下面的一些巨集,專門用來處理變參 va start va list ap,char fmt va arg va list ...

C語言變參,記錄

由於在 c語言中沒有函式過載 解決不定數目函式引數問題變得比較麻煩 即使採用 c 如果引數個數不能確定 也很難採用函式過載 對這種情況 有些人採用指標引數來解決問題.uhmm 用到的變參地方 用的原因 1,sql 語言必須用常量2,sql語言格式不相同,引數個數不相同使用a dyw mysql nu...

C語言變參使用

c語言中有很多變參的使用,例如printf 的原型是int printf const char fmt,那麼c語言是如何解析和處理這些變參的呢?下面進行簡單的總結 c語言中定義了下面的一些巨集,專門用來處理變參 va start va list ap,char fmt va arg va list ...