c++怎样编写不确定参数个数的函数 急!请高手指教c++如何定义一个参数个数不确定的函数?

作者&投稿:祢侨 (若有异议请与网页底部的电邮联系)

c++怎样编写不确定参数个数的函数

C++定义的函数是可以支持函数参数个数不确定的。VA_LIST是在C++语言中解决变参问题的一组宏,所在头文件:#include <stdarg.h>,用于获取不确定个数的参数同时使用...代替多个参数,调用时只需要根据需要传入多个参数。

VA_LIST的用法:

  1. 首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针;

  2. 然后用VA_START宏初始化刚定义的VA_LIST变量;

  3. 然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型(如果函数有多个可变参数的,依次调用VA_ARG获取各个参数);

  4. 最后用VA_END宏结束可变参数的获取。

参考代码:求多个数得平均值

#include <cstdarg>
#include <iostream>
using namespace std;
double average ( int num, ... )
{
  va_list arguments;                     // A place to store the list of arguments
  double sum = 0;
  va_start ( arguments, num );           // Initializing arguments to store all values after num
  for ( int x = 0; x < num; x++ )        // Loop until all numbers are added
    sum += va_arg ( arguments, double ); // Adds the next value in argument list to sum.
  va_end ( arguments );                  // Cleans up the list
  return sum / num;                      // Returns some number (typecast prevents truncation)
}
int main()
{
  cout<< average ( 3, 12.2, 22.3, 4.5 ) <<endl;
  cout<< average ( 5, 3.3, 2.2, 1.1, 5.5, 3.3 ) <<endl;
}


c++怎样编写不确定参数个数的函数?~

重载和缺省都不能解决楼主的问题。想解决这个问题,必须用到va_list。
但是注意,并不是所有编译器都支持这个功能,下面这个简单的求均值函数在VC6.0下编译通过。希望楼主能用到自己的实际应用中。

#include
#include

using namespace std;

double average ( int num, ... )
{
va_list arguments; // A place to store the list of arguments
double sum = 0;

va_start ( arguments, num ); // Initializing arguments to store all values after num
for ( int x = 0; x < num; x++ ) // Loop until all numbers are added
sum += va_arg ( arguments, double ); // Adds the next value in argument list to sum.
va_end ( arguments ); // Cleans up the list

return sum / num; // Returns some number (typecast prevents truncation)
}
int main()
{
cout<< average ( 3, 12.2, 22.3, 4.5 ) <<endl;
cout<< average ( 5, 3.3, 2.2, 1.1, 5.5, 3.3 ) <<endl;
}

补充一句:不确定输入参数个数的函数应该尽量的避免使用,除非万不得已,最好不要用。

  VA_LIST是在C语言中解决变参问题的一组宏,所在头文件:#include ,用于获取不确定个数的参数。
  VA_LIST的用法:
首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针;
然后用VA_START宏初始化刚定义的VA_LIST变量;
然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型(如果函数有多个可变参数的,依次调用VA_ARG获取各个参数);
最后用VA_END宏结束可变参数的获取。

以下是一个定义一个参数个数不确定的函数的简单例子:
#include #include using namespace std;double average ( int num, ... ){ va_list arguments; // A place to store the list of arguments double sum = 0; va_start ( arguments, num ); // Initializing arguments to store all values after num for ( int x = 0; x < num; x++ ) // Loop until all numbers are added sum += va_arg ( arguments, double ); // Adds the next value in argument list to sum. va_end ( arguments ); // Cleans up the list return sum / num; // Returns some number (typecast prevents truncation)}int main(){ cout<< average ( 3, 12.2, 22.3, 4.5 ) <<endl; cout<< average ( 5, 3.3, 2.2, 1.1, 5.5, 3.3 ) <<endl;}

python不定长参数代码求a²+b²+...n²?
答:要编写一个函数来计算给定参数的平方和,可以使用不定长参数(*args)来接收任意数量的参数。然后,可以使用循环来计算每个参数的平方,并将它们相加。以下是一个示例代码:在上述示例中,sum_of_squares 函数接受不定长参数 *args,并使用循环计算每个参数的平方并将其相加。然后,返回总和作为结果。你...

一维数组作为不确定参数传参怎么写?
答://下面做了注释,有问题追问,满意采纳3Q#include <stdio.h>#include <stdlib.h>#include <stdarg.h>int yy[100][3] = {0};void Fun(int *color,...){int i = 0,j;int *s;//color是第一个参数对应a[3]for(j = 0; j < 3; j ++){printf("%d ", color[j]); }yy[i][...

VC中不确定参数怎么使用
答:下面我们以具体的例子来说明以上三个宏的使用方法。2、一个简单的例子 include <stdarg.h> /* 函数名:max 功能:返回n个整数中的最大值 参数:num:整数的个数 ...:num个输入的整数 返回值:求得的最大整数 / int max ( int num, ... ){ int m = -0x7FFFFFFF; /* 32系统中最小...

c语言如何输入不确定值的个数
答:你说的是不确定个数的变量,还是不确定值得变量?前者你可以scanf("%d",&i), int * p = malloc(sizeof(int) * i) 这样可以分配i个int 类型的空间给你。后者的话,就有点无语了,int a 不初始化,那么a就是个不确定值得变量 ...

Matlab 自定义函数的参数个数问题。
答:1. 其实 titansports1就是你要的方式:你就通过输入参数的个数来判断是采用哪种计算方式(参数只是个名字而已,x1也可以看成是Y的)你要注意到plot的不同调用方式的参数肯定是不相同的或者是参数的数据类型不同(如实数和字符串)有点像c++中的函数重载了。2. 至于自动提示的方法可以这样 在函数的...

asp function参数个数不确定,并且一组是字符串,一组是变量,应该怎么解 ...
答:你定义函数时的参数为形式参数例如 function abc(a,b)…….end function 其中a,b为形参,你调用函数时的参数为实参,例如:a=“hello”abc(a,3+4)形参和实参要在数据类型,个数,顺序上做到一致。所以你说的“参数个数不确定”这是不对的,你定义函数的时候参数的个数肯定应该是确定的,如果...

关于elseif的个数未确定,应该怎么写呢
答:关于elseif的个数未确定,应该怎么写呢 情况是这样的,有个if语句我打算是这样写的if条件1then执行1elseif条件2then执行2elseif条件3then执行3………endif但是具体的条件和执行语句数量未知(条件和未知语句数量相... 情况是这样的,有个if语句我打算是这样写的if 条件1 then执行1elseif 条件2 then执行2elseif...

(C++)设计一个参数数目可变的函数,输出n个实参之和
答:sum()第一个参数是要求和的数的个数,后面跟着若干整型参数。如果实参个数小于第一个参数num的数值,sum()行为不确定。也可以不用num而设置一个参数结束标志(比如最后一个参数为-1等),但也有同样的问题。说白了就是你必须给函数一个知道参数个数的方法,否则函数无法知道你到底在调用的时候给了几...

...中除0以外的最小值,0的个数在这一行中并不确定。
答:1、首先,打开excel表,鼠标点击要编辑的单元格。2、点击菜单栏的公式——“插入函数”。3、在函数对话框内输入“MIN”,点击确定。4、弹出设置函数参数的窗口,在数值1处输入IF(B2:B11<>0,B2:B11)。5、接下来要注意,一定要按ctrl+shift+enter组合键点确定,这样才能得到除0以外的最小值。

Python中不定长参数这样用对吗?def hh(w,**l,pu='d'): 为什么?_百度知 ...
答:则18会传给person的第一个参数name,如果你写person("张三",18)又麻烦了,因为name的默认值就是"张三', 但我觉得使用person(age=18)还可以理解呀,不管怎么样吧,记住规矩就是这样的.).--- 下面就该引出题主问题中所谓的"不定长参数"了. 我感觉叫"任意数量的参数"更好理解一些,因为重点在于数量...