用可变参数列表求最大值

va_list arg  访问参数列表未确定部分

va_start(arg,val);//将 arg_ptr 设置为传递给该函数参数列表的第一个可选参数  arg是声明的变量名,val是已确定参数列表最后一个参数

va_arg(arg,int);//从 arg_ptr给出的位置检索 type 的值,并将 arg_ptr 指向列表中的下一个参数,使用 type 的范围确定下一个参数开始的位置。int是下一个参数的类型

va_end(arg);//重置指向 NULL的指针

#include <stdio.h>
#include <stdarg.h>
int Max(int n, ...)
{
	va_list arg;
	va_start(arg, n);
	int i = 0;
	int val = 0;
	int max = 0;
	for (i = 0; i < n; i++)
	{
		val = va_arg(arg, int);
		if (val>max)
			max = val;
	}
	va_end(arg);
	return max;
}
int main()
{
	int ret = Max(5,78,45,96,52,24);
	printf("%d\n", ret);
	return 0;
}

时间: 2024-10-08 00:34:21

用可变参数列表求最大值的相关文章

用可变参数列表求平均值

<stdarg.h> //头文件 va_list arg  访问参数列表未确定部分 va_start(arg,val);//将 arg_ptr 设置为传递给该函数参数列表的第一个可选参数  arg是声明的变量名,val是已确定参数列表最后一个参数 va_arg(arg,int);//从 arg_ptr给出的位置检索 type 的值,并将 arg_ptr 指向列表中的下一个参数,使用 type 的范围确定下一个参数开始的位置.int是下一个参数的类型 va_end(arg);//重置指向 NUL

可变参数列表

函数原型:列出了函数期望收到的参数数目及类型,但是它只能显示"固定数目"的参数. 可变参数列表:让一个函数在不同的时刻接受"不同数目"的参数.可变参数列表是通过宏来实现的,这些宏都在stdarg.h这个头文件中,所以使用可变参数列表时要引用头文件#include<stdarg>. 例如:求寻找一组整数中最小的值,因为整数的个数不确定,所以函数在传参的时候也是不确定的,因此需要用到可变参数列表: 利用可变参数列表求最小值:来看看可变参数列表的形式: int

【C语言】求多个数中的最大值(可变参数列表)

求多个数中的最大值要求用可变参数列表: 代码如下: <span style="font-size:18px;">#include<stdio.h> #include<stdarg.h> int Max(int n,...) { int i=0; int max=0; va_list arg; va_start(arg,n); for(i=0;i<n;i++) { int val=va_arg(arg,int); if (val>max)

浅析可变参数列表的使用

在我们使用函数时,一般大多数情况下里面的参数都是给定的,而且我们一般使用时并不会超过三个参数,可是这并不排除不会出现三个以上的参数,比如说求平均值,求和等等一些可能出现三个以上参数的函数运算,这时我们的参数不再是固定的,而是随时会不断变化的.因此我们就需要一种方法来实现它们,这种方法就是C语言给我们提供的一种叫做可变参数列表的函数方法. 首先,可变参数列表是通过宏来定义的,而这些宏又在<stdarg.h>的头文件中,因此我们在使用时要先引用该头文件,在引用后我们需要其下三个宏的函数: void

(C语言)可变参数列表

C函数要在程序中用到以下这些宏: void va_start( va_list arg_ptr, prev_param ); type va_arg( va_list arg_ptr, type ); void va_end( va_list arg_ptr ); va_list:用来保存宏va_start.va_arg和va_end所需信息的一种类型.为了访问变长参数列表中的参数,必须声明 va_list类型的一个对象       定义: typedef char *  va_list; va

可变参数列表的实现

在学习C语言的过程中,大家是不是和我一样,认为printf是一个神一样的函数?他可以接受不同数目,不同类型的参数,他到底是怎么实现的呢? 让我们去看一下它的源代码: printf源代码: int printf(const char *fmt,...) { int res; va_list arg; va_start(arg,fmt); res = vprintf(fmt,arg); va_end(arg); return res; } 它采用的是可变参数列表,可变参数列表主要有以下两个缺点: 1

c语言中对可变参数列表的简单理解

函数原型中一般情况下参数的数目是固定的,但是如果想在不同的时候接收不定数目的参数时该怎么办呢?c语言提供了可变参数列表来实现. 可变参数列表是通过宏来实现的,这些宏定义在stdarg.h的头文件中.头文件中声明了一个va_list类型和va_start.va_arg.va_end三个宏.我们使用可变参数列表的时候需要声明一个va_list类型的变量配合这三个宏使用. va_start(va_list变量名,省略号前面最后一个有名字的参数):在提取可变参数前必须调用这个宏实现初始化. va_arg

可变参数列表的例题

1.使用可变参数列表实现任意个数求平均值. #include<stdio.h> #include<stdarg.h> float average(int val,...) { int i=0; float sum=0.0; float ave=0.0; va_list arg; va_start(arg,val); for(i=0;i<val;i++) { sum+=va_arg(arg,int); } va_end(arg); ave=sum/val; return ave

【C语言】可变参数列表。

(1)先看一个求平均值的函数 #include <stdio.h> double average(int val,int v1,int v2,int v3,int v4,int v5) { double sum = v1; if(val >= 2) sum += v2; if(val >= 3) sum += v3; if(val >= 4) sum += v4; if(val >= 5) sum += v5; return sum/val; } int main ()