編寫乙個名叫max_list的函式,它用於檢查任意數目的整型引數並返回它們中最大值,引數列表必須以負值結尾,提示列表結束。
這個題目的重點是任意數目的整型引數,所以並不確定傳入的引數數量,這裡就可以使用可變引數。
#include #include int max_list(int x, ...)
printf("tmp : %d\n", tmp);
} while(tmp >= 0);
va_end(var_list);
return max;
}int main ()
因為可變引數的取值方式比較固定,這裡就沒必要展開講了。
不過需要注意va_arg去取引數,如果沒有引數了,就返回的是0,所以需要根據輸入的資料來終止取資料的操作,這裡定義1個負數,我們可以看到只會取出1個負數,後面就跳出迴圈了。可變引數的這3個方法是定義的巨集,所以無法進行型別判斷,所以傳入的值型別需要自己實現匹配,printf函式也是根據format來判斷的。而且va_arg的第二個引數不支援以下這些型別:
char、signed char、unsigned char如果傳入的float,將被轉為double。short、unsigned short
signed short、short int、signed short int、unsigned short int
float
如果傳入的char、signed char、unsigned char、short、unsigned short,將被轉為int。
如果int不夠,將被轉為unsigned int.
C語言可變引數的使用
可變引數函式指的是函式引數個數不固定的函式,類似printf char fmt,如果想自己寫乙個可變引數的函式,需要用到stdarg.h標頭檔案中的如下幾個巨集 void va start va list arg ptr,prev param type va arg va list arg ptr,...
C語言可變引數使用介紹
我們可能常常在linux c中看見一些函式,特別是輸出函式,或可以格式轉化的函式,比如printf等函式,他的引數是可變的。int printf const char format,int vprintf const char format,va list ap int vfprintf file ...
c 語言可變引數
1 當無法列出傳遞函式的所有實參的型別和數目時,可用省略號指定參數列 void foo void foo parm list,2 函式引數的傳遞原理 函式引數是以資料結構 棧的形式訪問,從右至左入棧.eg include void fun int a,int main output 12 343 獲...