| 4 | 1/1 | 返回列表 |
| 查看: 586 | 回復(fù): 3 | ||
| 【獎勵】 本帖被評價2次,作者yalefield增加金幣 1.5 個 | ||
[資源]
【分享】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ù)的值。 、侨缓笥胿a_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é)束條件。 |
| 4 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 材料科學(xué)與工程調(diào)劑 +10 | 深V宿舍吧 2026-03-30 | 11/550 |
|
|---|---|---|---|---|
|
[考博] 材料專業(yè)申博 +3 | 杜雨婷dyt 2026-03-29 | 3/150 |
|
|
[考研] 307求調(diào)劑 +18 | 超級伊昂大王 2026-03-24 | 20/1000 |
|
|
[考研] 理學(xué)07化學(xué) 303求調(diào)劑 +4 | 睿08 2026-03-27 | 4/200 |
|
|
[考研] 085602化工求調(diào)劑(331分) +8 | 111@127 2026-03-30 | 8/400 |
|
|
[考研] 367求調(diào)劑 +5 | 芋泥啵! 2026-03-28 | 5/250 |
|
|
[考研] 085600 286分 材料求調(diào)劑 +11 | 麻辣魷魚 2026-03-27 | 12/600 |
|
|
[考研] 材料學(xué)碩333求調(diào)劑 +14 | 北道巷 2026-03-24 | 14/700 |
|
|
[考研] 293求調(diào)劑 +3 | 末未mm 2026-03-30 | 5/250 |
|
|
[考研] 本科211生物醫(yī)學(xué)工程085409求調(diào)劑339分 +3 | 里子木yy 2026-03-29 | 3/150 |
|
|
[考研] 085602 化學(xué)工程專碩 340分求調(diào)劑 +4 | qianbai11 2026-03-29 | 4/200 |
|
|
[考研] 材料與化工272求調(diào)劑 +21 | 阿斯蒂芬2004 2026-03-28 | 21/1050 |
|
|
[考研] 375求調(diào)劑 +6 | 雨夏整夜 2026-03-29 | 6/300 |
|
|
[考研] 291求調(diào)劑 +5 | Y-cap 2026-03-29 | 6/300 |
|
|
[考研] 340求調(diào)劑 +6 | Amber00 2026-03-26 | 6/300 |
|
|
[考研] 085602 307分 求調(diào)劑 +7 | 不知道叫什么! 2026-03-26 | 7/350 |
|
|
[考研] 315分求調(diào)劑 +7 | 26考研上岸版26 2026-03-26 | 7/350 |
|
|
[考研] 265求調(diào)劑 +8 | 小木蟲085600 2026-03-27 | 8/400 |
|
|
[考研] 0703化學(xué)求調(diào)劑,各位老師看看我!。 +5 | 祁祺祺 2026-03-25 | 5/250 |
|
|
[考研] 中國科學(xué)院深圳先進技術(shù)研究院-光纖傳感課題組招生-中國科學(xué)院大學(xué)、深圳理工大學(xué)聯(lián)培 +5 | YangTyu1 2026-03-26 | 5/250 |
|