首页后端开发其他后端知识c语言不定参数函数怎么写 c语言不定参数函数怎么写出来

c语言不定参数函数怎么写 c语言不定参数函数怎么写出来

时间2023-04-11 19:52:02发布访客分类其他后端知识浏览567
导读:C语言 麻烦帮写个不定参数函数的程序 #include "stdarg.h"//n表示输入参数,总的个数,后面是各个元素的值int va_add(int n,... { va_list lst; int i; int t = 0;...

C语言 麻烦帮写个不定参数函数的程序

#include "stdarg.h"

//n表示输入参数,总的个数,后面是各个元素的值

int va_add(int n,...)

{

va_list lst;

int i;

int t = 0;

va_start(lst,n);

for (i = 0; i n; i++)

{

int c = va_arg(lst, int);

printf("%d: %d\n", c);

t += c;

}

return t;

}

int main()

{

int t = va_add(4,1,2,3,4);

printf("Sum is:%d\n", t);

getch();

return 0;

}

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

VA_LIST是在C语言中解决变参问题的一组宏,所在头文件:#include stdarg.h,用于获取不确定个数的参数。

VA_LIST的用法:

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

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

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

最后用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语言怎么实现函数不定参数

C语言中定义了va_list, va_start( ), va_arg( ), va_end( ) 这样一组宏来处理可变参数问题。

可以参考printf的声明,创建自己的实现函数。示例:

#includestdio.h

#includestdarg.h

void va_fun(int start,...)

{

 va_list arg_ptr;

 int nArgValue = start;

 int nArgCount = 1;

 va_start(arg_ptr,start);

 while(nArgValue != -1)

 {

 printf("arg %d is:%d/n",nArgCount,nArgValue);

 nArgValue=va_arg(arg_ptr,int);

 ++nArgCount;  

 }

 return;  

}

main()

{

 va_fun(5,1,7,-1);

 printf("................/n");

 va_fun(2,4,-1);

 printf("................/n");

 va_fun(-1);

 printf("................/n");

 //va_fun();  可变参数函数最少要有一个参数。

}

C语言,不定参数的函数指针问题

很巧我现在正好也有实现这样函数的需求,其实就是看了C语言可变参数函数的相关资料,你就差不多知道怎么实现了。

只不过其中有一个很重要的大坑,只要迈过去就没问题。我是试了半天才明白的:

如果参数是char或float类型,这样的参数放在可变参数部分的话,编译器是会默认把它们的类型提升为相应的“全”类型的:char提升为int,float提升为double。如果你没注意这一点就会出现错误。当然可以通过指针的类型转换来避免。

先简略地点一下,等我在CSDN博客里详细地写一写心得吧。虽然是N年前的问题估计楼主早就自己解决了,但希望能帮到其他人:)

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: c语言不定参数函数怎么写 c语言不定参数函数怎么写出来
本文地址: https://pptw.com/jishu/2627.html
c语言定义随即函数 c语言怎么定义随机数 c语言random函数 c语言random函数头文件

游客 回复需填写必要信息