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 );
}

解决方案 »

  1.   

    int Add(int numberCount,...)
    {
      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);
    }
      

  2.   

    那就传递一个指针
    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);
      

  3.   

    上面各位的也都是好办发
    你要偷懒的话
    还可以创建一块内存区域,当然是int+byte的整数倍
    传递参数的时候,把该内存块的首地址,还有内存块的长度做参数
    使用传递过来的参数时候,强制转换成int,byte你需要的类型就是。
    没有必要搞的很复杂。很容易实现的,我上面用结构体实现也一样。
      

  4.   

    florist2000(善良的石头)的方法很不错,实现简单,而且高效
      

  5.   

    florist2000(善良的石头)的方法是很不错,我也会的
    不过我要学的就是那三个点