va start函式的使用

2021-05-09 16:23:45 字數 738 閱讀 9317

/*  基本過程:

va_list arglist; //宣告乙個變數來轉換引數列表

va_start(arglist,format); //初始化變數

va_end(arglist); //結束變數列表,和va_start成對使用

可以根據va_arg(arglist,type)取出引數 其中type可以是int,char等等

或  va_start(arglist, format);

status = vsnprintf(buf, 1024, format, arglist);  //有些編譯器要求寫成_vsnprintf

va_end(arglist);

vsnprintf()函式:

int vsnprintf (char *s, size_t size, const char *template, va_list ap)

本函式跟snprintf函式很類似,只是將引數的數目可變的,變成了乙個指標的列表。

*/#include

#include

void ******_va_fun(int start, ...)

while(nargvalue != -1);

return;

}int main(int argc, char* argv)

/*輸出結果:the 1 th arg: 100

the 1 th arg: 100

the 2 th arg: 200

va start和va end的使用

1 由於在c語言中沒有函式過載,解決不定數目函式引數問題變得比較麻煩 即使採用c 如果引數個數不能確定,也很難採用函式過載.對這種情況,有些人採用指標引數來解決問題.下面就c語言中處理不定引數數目的問題進行討論.2 下面是 裡面重要的幾個巨集定義如下 typedef char va list voi...

va start和va end使用詳解

本文主要介紹va start和va end的使用及原理。在以前的一篇帖子format messagebox 詳解 中曾使用到va start和va end這兩個巨集,但對它們也只是泛泛的了解。介紹這兩個巨集之前先看一下c中傳遞函式的引數時的用法和原理 1.在c中,當我們無法列出傳遞函式的所有實參的型...

va start和va end使用詳解

介紹這兩個巨集之前先看一下c中傳遞函式的引數時的用法和原理 1.在c中,當我們無法列出傳遞函式的所有實參的型別和數目時,可以用省略號指定參數列 void foo void foo parm list,這種方式和我們以前認識的不大一樣,但我們要記住這是c中一種傳參的形式,在後面我們就會用到它。2.函式...