int average( int first, ... )
{
int count = 0, sum = 0, i = first;
va_list er; va_start( er, first ); /* Initialize variable arguments. */
while( i != -1 )
{
sum += i;
count++;
i = va_arg( er, int);
}
va_end( er ); /* Reset variable arguments. */
return( sum ? (sum / count) : 0 );
}
{
int count = 0, sum = 0, i = first;
va_list er; va_start( er, first ); /* Initialize variable arguments. */
while( i != -1 )
{
sum += i;
count++;
i = va_arg( er, int);
}
va_end( er ); /* Reset variable arguments. */
return( sum ? (sum / count) : 0 );
}
解决方案 »
- 请问这三种加载lib库文件的方式有什么不同?
- 帮朋友投票,投票都有分。
- 为什么在DLL中使用OutputDebugString(str) debug窗口没有显示?
- 为何使用GetOpenFileName()时 定义OPENFILENAME ofn;时 报错undeclared identifier
- 谁有禁止浏览器弹出窗口的代码
- MDI的界面的小问题
- 求救:VC操作xml后非法操作:提示该内存不能为read!,我把代码贴出,哪位大哥帮帮小弟?
- 感谢chenhq(chenhq) 。近来接分
- Help : CMyApp中m_pMainWnd能否为CDialog?
- 为什么使用了Domodal()对话框却没有生成出来,我查看了,没有窗口句柄!wait online
- 谁有收IPX广播包的的例子(Winsock),谢谢!(内详)
- 如何得到别的程序的进程句柄handle of the process (已知别的程序的窗口句柄)
{
va_list vlist;
int count=numberCount/2;
int temp1;
BYTE temp2; va_start(vlist,count);
while(count--)
{
temp1=va_arg(vlist,int);
temp2=va_arg(vlist,BYTE);
///////
//你要用temp1,temp2作的事
//.....
}
va_end(vlist);
}
struct _param{
int a;
byte b;}PARAM ,*LPPARAM;ADD(LPPARAM p,int count)
{
do what you want ;
}int n=10;
LPPARAM params=new PARAM[n];
ADD(params, n);
你要偷懒的话
还可以创建一块内存区域,当然是int+byte的整数倍
传递参数的时候,把该内存块的首地址,还有内存块的长度做参数
使用传递过来的参数时候,强制转换成int,byte你需要的类型就是。
没有必要搞的很复杂。很容易实现的,我上面用结构体实现也一样。
不过我要学的就是那三个点