[问题] 函数中参数个数

楼主: 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