C++函数可变参数实现

原创 2013年07月08日 16:23:03

#include <iostream>
#include <cstdarg>

int add(const int a,...); //函数原型

int main()
{
	using std::cout;
	using std::endl;

	cout << "\t可变参数函数功能验证程序\n"<< endl;
	cout << "五个实参调用add求和:"<< add(5,1,2,3,4,5)<< endl;
	cout << "九个实参调用add求和:"<< add(9,1,2,3,4,5,6,7,8,9)<< endl;
}
//可变参数函数,形参列表中的省略号(也就是三个英文句点:...)表明可以传递任意数量的实参
int add(const int ca,...) //第一个参数指定了参数列表中实参的个数
{
	if (ca <= 0) //判断参数列表中参数的数量
		return 0;

	int sum = 0;
	va_list pArg; //声明一个va_list类型的参数列表指针,它可以依次指向各个实参
	va_start(pArg,ca);//va_start初始化pArg,设定它指向第一个实参,ca辅助pArg确定第一个实参的位置


	for (int i=0; i<ca; i++)//使用for循环取出实参列表中的每一个值
	{
		sum = sum + va_arg(pArg,int);//va_arg返回pArg指向的实参的值,然后使pArg自增,指向下一个实参,int是实参的类型
	} //va_arg的第二个参数int还能影响pArg的自增,如果它配置的不正确,将会出现错误的结果


	va_end(pArg); //重置参数列表指针为空

	return sum;
}

细细品味ASP.NET (二)

细细品味ASP.NET (二)青苹果工作室(编译) 01-5-17 下午 01:33:55Web表单 ASP.NET Web Forms就是Web页面,同现在你用 ASP编写代码所做的工作是一样的。...
  • tchaikov
  • tchaikov
  • 2001-05-17 18:50:00
  • 981

C++可变参数函数

C++可变参数函数的三种实现方法:C风格实现,基于initializer_list,和基于模板。三种实现方法的比较和优缺点总结。...
  • qq_35280514
  • qq_35280514
  • 2016-06-11 20:26:45
  • 8360

【C++基础之二十】可变参数的函数

C++中可变参数的函数是从C中继承而来,可变参数的函数是指函数的参数个数可变,参数类型不定的函数。我们最常见的就是printf()。 1.可变参数函数实现原理 指定参数的函数实现很简单,通过通过指...
  • jackyvincefu
  • jackyvincefu
  • 2013-12-24 09:55:02
  • 17258

可变参数的函数的原理

可变参数。1:必须有一个提前参数,(即:...之前必须要有一个参数),用以计算出后面的第一个未知参数的地址. 知道了第一个未知参数的地址之后, 就可以根据fmt格式化串,可以依次计算出剩余的参数地址....
  • zdl1016
  • zdl1016
  • 2007-07-19 11:19:00
  • 2849

C++之可变参数的实现简介

由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦,即使采用C++,如果参数个数不能确定,也很难采用函数重载。对这种情况,提出了指针参数来解决问题。   如printf()函数,其...
  • sauphy
  • sauphy
  • 2015-12-14 22:10:02
  • 1212

如何实现函数来处理可变参数

使用va宏实现具有可变参数的函数
  • sunny_ss12
  • sunny_ss12
  • 2016-04-02 02:32:46
  • 1614

如何自定义可变参数函数

在我们编写代码中,有时需要我们自定义可变参数函数,像库函数中有pirntf,ioctl都是可变参数函数,如果我们要实现自定义可变参数,一般要实现像int ioctl(int fd, unsigned ...
  • u012681014
  • u012681014
  • 2017-04-15 00:33:01
  • 896

详解如何实现定义一个参数个数可变的函数

前言:本文章大部分参考了网易博主喧闹的寂寞的文章如何实现可变参数函数和chinaunix博主vinge的文章编写可变参数c函数,感谢这两偏文章的详细解说。 还记得在以前的一个面试中遇到这样一个题目,...
  • cgqzly123
  • cgqzly123
  • 2016-01-13 22:05:56
  • 863

C++11:可变参数模板实现print输出参数

C++11支持可变参数模板的特性,真的是很好用。 下面代码实现的print函数,就利用可变参数模板以及函数模板递归调用,实现将任意多个不同类型的参数顺序输出打印到std::ostream流中。#in...
  • 10km
  • 10km
  • 2016-04-23 15:53:37
  • 1250

C++参数个数可变函数的本质

va_list是一个宏,由va_start和va_end界定。     typedef char* va_list;   void va_start ( va_list ap, prev_pa...
  • a524624859
  • a524624859
  • 2017-04-17 17:28:52
  • 377
收藏助手
不良信息举报
您举报文章:C++函数可变参数实现
举报原因:
原因补充:

(最多只允许输入30个字)