关于C++函数接受数量不定的实参及cstdarg头文件中的va_list,va_start,va_end,va_arg使用范例。

编译环境:Vs2012;

//Handling a variable number of arguments

/////////////////////////////////////////////////////////////////////////////

#include <iostream>
#include<stdlib.h>
#include<cstdarg>

using std::cout;
using std::endl;

int sum (int count,...)
{
if (count<=0)
return 0;
va_list arg_ptr;
va_start(arg_ptr,count);

int sum=0;
for (int i=0;i<count;i++)
sum +=va_arg(arg_ptr,int);
va_end(arg_ptr);
return sum;

}
int main(int argc,char* argv[])
{
cout<<sum(3,4,2,4,6,6,7,7,5,5,4,4,3,5,6,5,3,3,3)<<endl;
cout<<sum(32,34,23,45,23,46,75,34,23,12,35)<<endl;
system("pause");
return 0;

}

输出结果不正确,问题出在哪里了呢 。分析中。。。

时间: 2024-11-10 01:25:51

关于C++函数接受数量不定的实参及cstdarg头文件中的va_list,va_start,va_end,va_arg使用范例。的相关文章

将函数实现放在头文件中

研究一个开源算法库,采用C++模板编程,所有函数实现都放在了头文件中,现在把模板去掉,链接时发生冲突,具体原因如下: 因为多个源文件包含了含有函数定义的头文件,在编译的时候,每个源文件都会包含一份函数定义,在链接时编译器不知道需要连接哪一份函数定义. 解决方法有三个: 1. inline关键字 可以用关键字inline修饰函数定义,例如: inline int add(int x, int y) { return x + y; } 使用inline关键字,编译器会在调用此函数的地方把函数的目标代

C语言头文件中包含的函数

math.h常用函数 int  abs   (int x); double  acos  (double x); double  asin  (double x); double  atan  (double x); double  atan2 (double y, double x); double  atof  (const char *s); double  ceil  (double x); double  cos   (double x); double  cosh  (double

函数放在头文件中被多次包含的重定义问题

Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源 例如一个头文件headfile.h这样写 #pragma once bool Func (){return true;} 在这个头文件被多个地方包含的时候就会出问题,链接时报错: (FuncB报重定义) "fatal error LNK1169: 找到一个或多个多重定义的符号" 原因是,在headfile.h中定义了函数及其实现,如果被包含时,则会把函数实现放入包含的位置,被包含

不要在头文件中写函数定义

我们都知道static声明静态函数在别的文件是不可以使用的,但是如果你将定义也写在.h文件下是不是还是这样的呢,或者说编译器会不会提示你这样是有问题的呢?结果却是将static函数的定义直接写在了file.h的头文件中,导致staic关键字失效,代码如下. //file1.h #include <iostream>using namespace std; static void fun() { cout << "static fun" << ends

C语言&lt;memory.h&gt;和&lt;string.h&gt;头文件中的函数

2014年9月29日 strcpy 原型:extern char *strcpy(char * dest, char * src); 用法:#include 功能:把src所指由NULL结束的字符串复制到dest所指的数组中. 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串. 返回指向dest的指针. #include<stdio.h> #include<string.h> int main(void){    charstring[10

将类的定义放在头文件中,把成员函数的实现代码放在一个cpp文件中

写这种.h和.cpp文件分开的大程序,虽然对很多人来说很简单,对自己来说算是第一次吧,好好学C++,加油~ 题目:定义Point类,由Point派生出Circle类,再由Circle派生出Cylinder类.将类的定义部分分别作为3个头文件,对他们的成员函数的定义分别作为3个源文件 1.Point.h文件 1 #ifndef POINT_H 2 #define POINT_H 3 #include<iostream> //头文件也需要包含这个 4 using namespace std; 5

请问在C++中clrscr,textbackground,textmode,textcolor这些函数有什么用?如何用?它们被包含在哪个头文件中?

全包含在: conio.h 中clrscr : 控制台程序清屏! 光标回到 1,1 点 void clrscr(void);textbackground : 选择一种新的文本背景色 void textbackground(int newcolor);textmode : 将屏幕设置为文本模式 void textmode(int newmode);textcolor : 在文本模式中选择新的文本颜色 void textcolor(int newcolor);这些函数不能用在 Win32 程序或 W

用回调函数创建一个XMLHttpRequest,并从一个TXT文件中检索数据。

<script> var xmlhttp; function loadXMLDoc(url,soyo) { if (window.XMLHttpRequest) {// IE7+, Firefox, Chrome, Opera, Safari 代码 xmlhttp=new XMLHttpRequest(); } else {// IE6, IE5 代码 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onr

C++编程常用头文件及其包含函数汇总

1. #include<iostream>是标准的C++头文件,任何符合标准的C++开发环境都有这个头文件. 当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现:当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std:这样才能正确使用cout.   2.#include <cstdlib>是C++里面的一个常用函数库, 等价于C中的<stdlib.h>