不定参数函数

来源:互联网 发布:南丹县网络问政平台 编辑:程序博客网 时间:2024/05/19 12:17

一:

首先,java中的不定参数就是数组,test(Integer...args)可以换成test(Integer[]rgs)

 

package com.bbsoft.test;

public class TestManyArgs {

public static Integer[] test(Integer... args) {

   if (args == null) {
   System.out.println("input is null");
    returnargs;
   }
   if (args.length == 0){
   System.out.println("input is empty");
    returnargs;
   }

   for (int i = 0; i< args.length; i++) {
    //System.out.println(args[i]);
    args[i] =100 + i + args[i];
   }

   return args;

}

public static void main(String[] args) {
   //TestManyArgs.test(2,3,3,3,3,3);

   Integer[] integerArray = newInteger[0];
   // Integer[] anotherArray =TestManyArgs.test(integerArray);
   Integer[] anotherArray =TestManyArgs.test(3, 5, 7, 8, 9);

   if (anotherArray == null){
   System.out.println("another array is null");
   return;
   }
   if (anotherArray.length == 0){
   System.out.println("another array is empty ..");
   return;
   }

   for (Integer i : anotherArray){
   System.out.println("int in anotherArray==>" +i);
   }


}
}

二:C里头

http://blog.csdn.net/rainid/article/details/4406739

实例:

求正整数平均值,-1就是自定义的结束标示符

#include "stdafx.h"
#include "iostream"
using namespace std;
typedef char * va_list; 
 
#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1)& ~(sizeof(int) - 1) ) 
#define va_start(ap,v) ( ap = (va_list)&v +_INTSIZEOF(v) ) 
#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) -_INTSIZEOF(t)) ) 
#define va_end(ap) ( ap = (va_list)0 )


int average1(int first,...);
int average2(int count, int first,...);
int _tmain(int argc, _TCHAR* argv[])
{
cout<<average1(1, 2, 3, 4, 5,-1)<<endl;
cout<<average2(5, 1, 2, 3, 4,5)<<endl;

return 0;
}

int average1( int first, ... ) 
{
int count = 0, sum = 0;
int var = first;

va_list list;
va_start(list, first);

while( var!=-1 )
{
   sum +=var; 
  count++; 
   var = va_arg( list,int); 
  
}
va_end( list );

return( sum ? (sum / count) : 0 );
}


int average2(int count, int first, ... ) 
{
int sum = 0, var = first;

va_list list;
va_start( list, first );

for(int k=0; k
{
   sum +=var; 
   var = va_arg( list,int); 
  
}
va_end( list );

return( sum ? (sum / count) : 0 );
}

原创粉丝点击