| 5 | 1/1 | 返回列表 |
| 查看: 588 | 回復(fù): 3 | ||
| 【獎勵】 本帖被評價2次,作者yalefield增加金幣 1.5 個 | ||
| 當(dāng)前只顯示滿足指定條件的回帖,點擊這里查看本話題的所有回帖 | ||
[資源]
【分享】C語言,怎么玩可變參數(shù) 已有1人參與
|
||
|
printf()函數(shù)原型為: int printf( const char* format, ...); 這里面就有可變參數(shù),三個點 ... printf("%d",i); printf("%s",s); printf("the number is %d ,string is:%s", i, s); 這三個點,能應(yīng)付那么多情況.......羨慕嫉妒恨! 怎樣寫一個簡單的可變參數(shù)的C函數(shù) 例子:該函數(shù)至少有一個整數(shù)參數(shù),其后是占位符…,表示后面參數(shù)的個數(shù)不定. 在這個例子里,所有的輸入?yún)?shù)必須都是整數(shù),函數(shù)的功能是打印所有參數(shù)的值. 函數(shù)代碼如下: //示例代碼1:可變參數(shù)函數(shù)的使用 #include "stdio.h" #include "stdarg.h" void simple_va_fun(int start, ...) { va_list arg_ptr; int nArgValue =start; int nArgCout=0; //可變參數(shù)的數(shù)目 va_start(arg_ptr,start); //以固定參數(shù)的地址為起點確定變參的內(nèi)存起始地址。 do { ++nArgCout; printf("the %d th arg: %d\n",nArgCout,nArgValue); //輸出各參數(shù)的值 nArgValue = va_arg(arg_ptr,int); //得到下一個可變參數(shù)的值 } while(nArgValue != -1); return; } int main(int argc, char* argv[]) { simple_va_fun(100,-1); simple_va_fun(100,200,-1); return 0; } 使用可變參數(shù)應(yīng)該有以下步驟: 、旁诔绦蛑袑⒂玫揭韵逻@些宏: 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在這里是variable-argument(可變參數(shù))的意思. 這些宏定義在stdarg.h中,所以用到可變參數(shù)的程序應(yīng)該包含這個頭文件. ⑵函數(shù)里首先定義一個va_list型的變量,這里是arg_ptr,這個變量是指向參數(shù)地址的指針.因為得到參數(shù)的地址之后,再結(jié)合參數(shù)的類型,才能得到參數(shù)的值。 ⑶然后用va_start宏初始化⑵中定義的變量arg_ptr,這個宏的第二個參數(shù)是可變參數(shù)列表的前一個參數(shù),也就是最后一個固定參數(shù)。 、热缓笠来斡胿a_arg宏使arg_ptr返回可變參數(shù)的地址,得到這個地址之后,結(jié)合參數(shù)的類型,就可以得到參數(shù)的值。然后進行輸出。 、稍O(shè)定結(jié)束條件,這里的條件就是判斷參數(shù)值是否為-1。注意被調(diào)的函數(shù)在調(diào)用時是不知道可變參數(shù)的正確數(shù)目的,程序員必須自己在代碼中指明結(jié)束條件。 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 291求調(diào)劑 +10 | Y-cap 2026-03-29 | 13/650 |
|
|---|---|---|---|---|
|
[考研] 一志愿085600中科院寧波所276分求調(diào)劑 +6 | 材料學(xué)257求調(diào)劑 2026-03-28 | 7/350 |
|
|
[考研] 0856調(diào)劑 +3 | 曲聽筠 2026-03-30 | 3/150 |
|
|
[考研] 370求調(diào)劑 +3 | 080700調(diào)劑 2026-03-30 | 3/150 |
|
|
[考研] 理學(xué)07化學(xué) 303求調(diào)劑 +4 | 睿08 2026-03-27 | 4/200 |
|
|
[考研] 抱歉 +4 | 田洪有 2026-03-30 | 4/200 |
|
|
[考研] 求收留 +6 | 1943443204 2026-03-28 | 6/300 |
|
|
[考研] 085600,專業(yè)課化工原理,320分求調(diào)劑 +5 | 大饞小子 2026-03-29 | 5/250 |
|
|
[考研] 295材料工程專碩求調(diào)劑 +10 | 1428151015 2026-03-27 | 10/500 |
|
|
[有機交流] 考研調(diào)劑 +8 | watb 2026-03-26 | 8/400 |
|
|
[考研] 0856求調(diào)劑 +8 | 楒桉 2026-03-28 | 8/400 |
|
|
[考研] 考研調(diào)劑 +7 | 小蠟新筆 2026-03-29 | 7/350 |
|
|
[考研] 一志愿太原理工安全工程300分,求調(diào)劑 +5 | 0857求調(diào)劑. 2026-03-24 | 6/300 |
|
|
[考研] 316求調(diào)劑 +7 | 江辭666 2026-03-26 | 7/350 |
|
|
[考研] 求調(diào)劑 +6 | 蘆lty 2026-03-25 | 7/350 |
|
|
[考研] 295求調(diào)劑 +5 | 1428151015 2026-03-27 | 6/300 |
|
|
[考研] 求調(diào)劑 +4 | 零八# 2026-03-27 | 4/200 |
|
|
[考研] 一志愿吉大071010,316分求調(diào)劑 +3 | xgbiknn 2026-03-27 | 3/150 |
|
|
[考研] 303求調(diào)劑 +6 | 藍山月 2026-03-25 | 6/300 |
|
|
[考研] 求調(diào)劑 +3 | 李李不服輸 2026-03-25 | 3/150 |
|