将少数数字作为一个数组参数传递给函数

时间:2013-05-30 19:02:12

标签: c++ arrays function arguments

嗨我想从一个arguemnts传递给一个将保存在数组中的函数。

function( 4, 3, 5); //calling function and passing arguments to it.

void function(int array[10])
{
    cout<<array[0];  // = 4
    cout<<array[1];  // = 3
    cout<<array[2];  // = 5
    cout<<array[3];  // = NULL or 0 or sth else
}

基本上我想让oportunnity传递尽可能多的参数,不多也不少。

不可能是这样。

    function( 4, 3, 5); //calling function and passing arguments to it.

    void function(int x1=NULL , int x2=NULL , int x3=NULL ,int x4=NULL , int x5=NULL)
    {
    for (int i=0 ; i<10;i++)
    {
        array[i] = x1;    // x2 , x3 and so on ...
    }

    cout<<array[0];  // = 4
    cout<<array[1];  // = 3
    cout<<array[2];  // = 5
    cout<<array[3];  // = NULL or 0 or sth else
    }

这个程序比这个例子更复杂,所以我需要它成为数组。

3 个答案:

答案 0 :(得分:0)

为什么你不能只传递一个值数组和数组的长度?看起来这就像你要问的那样。例如:

int main{
  int myArray[3] = { 4, 3, 5 };
  function( myArray, 3 );
}

void function( int * argsArray, int argsArrayLength ){
  int i;
  for( i = 0; i < argsArrayLength; i++ )
    cout << argsArray[i] << endl;
}

答案 1 :(得分:0)

如果你使用的参数是常量表达式,你可以这样做:

template <int... Entries>
void function() {
    int array[10] = {Entries...};

    std::cout << array[0];  // prints 4 in example below
    std::cout << array[1];  // prints 3
    std::cout << array[2];  // prints 6
    std::cout << array[3];  // prints 0
}

这就是你如何使用它:

function<4,3,6>();

答案 2 :(得分:0)

一种方法是声明header cstdarg中定义的veridac函数。

不能说我实际上已经将它们用于任何事情,但实现你想要做的事情的基本方法看起来像是:

#include "stdarg.h"

void myfunction(int argcnt, ...){
  va_list args;
  int myarray[argcnt];

  va_start(args, argcnt);
  for(int i=0;i<argcnt;i++){
    myarray[i] = va_arg(args,int);
  }
  va_end(ap);
  // At this point, myarray[] should hold all of the passed arguments
  // and be ready to do something useful with.
}

在此示例中,要处理的其他参数的数量在第一个参数中传递。所以打电话:

myfunction(5,1,2,3,4,5);

会生成一个等同于myarray [5] = {1,2,3,4,5}

的局部变量

stdarg.h的Wikipedia entry对于这种方法来说也是一个相当不错的资源。此外,这个StackExchange discussion在更复杂的实现方面有一些非常好的信息。