[問題] 函數中參數個數

作者: dailiner (呆凜)   2014-05-16 22:42:42
想請問一下,假設現在有個函數,
我設定他最多的參數個數是 4 個,
但其實每次用到這函數的時候參數設定個數不一定,1~4個都有可能,
請問有沒有辦法知道確切個數是幾個?
陣列個數我知道可以用 sizeof
但函數參數估狗找到的幾乎都說不定參數沒辦法準確知道。
舉個例子,像是有個骰子,我請人丟,可以丟1~4次,
根據丟的次數和值,有一套算法來計算每個人的結果並輸出。
void database()
{
throw(1,4,6);
throw(2,2);
throw(6,3,1,5);
throw(5);
}
void throw(char data1, char data2, char data3, char data4)
{
先取得這次丟的次數;
switch(次數)
{
case 1:
計算方式1; //maybe data1*404
break;
case 2:
計算方式2; //maybe data1*203 + data2*200
break;
case 3:
計算方式3; //maybe data1*150 + data2*130 + data3*122
break;
case 4:
計算方式4; //maybe data1*99 + data2*100 + data3*101 + data4*102
break;
default:
break;
}
輸出計算結果;
}
請問有解嗎??卡住好幾天了@_@
謝謝!!
作者: uranusjr (←這人是超級笨蛋)   2014-05-16 22:56:00
C++ 的話用預設參數或多載就解了, C 可能要用 va_list
作者: dailiner (呆凜)   2014-05-16 23:00:00
是c @@
作者: LPH66 (-6.2598534e+18f)   2014-05-16 23:00:00
C 的 va_list 需要額外參數幫助才行這個額外參數可以是個數, 也可以是結尾值
作者: cismjmgoshr (--???--)   2014-05-16 23:15:00
如果參數都是同一個型態的變數,傳一個指標(或陣列)再加上參數的個數,這樣可行嗎?
作者: dailiner (呆凜)   2014-05-16 23:36:00
我試試看~ 謝謝各位~!
作者: Raymond0710 (雷門)   2014-05-16 23:38:00
傳struct { char data[4]; int size; }
作者: sunneo (艾斯寇德)   2014-05-17 05:55:00
用巨集來輔助(參考這討論 http://ppt.cc/zg4Y
作者: dailiner (呆凜)   2014-05-17 11:59:00
謝謝 我試試看~!
作者: TeaEEE (愛不趴 不愛趴)   2014-05-19 02:49:00
沒人覺得原PO真正的解法是用多載嗎?
作者: LPH66 (-6.2598534e+18f)   2014-05-19 06:55:00
那個, 原 PO 在二樓推了是 C 不是 C++...

Links booklink

Contact Us: admin [ a t ] ucptt.com