C语言可变参数的简单理解-计算最大值
可变参数是C里面的一个使用技巧,用宏来实现的,其实主要是根据一个可变参数指针,然后不断的往后移指针。
但是理解是怎么用的,还是比较容易的。
#include <stdarg.h>//使用可变参数需要的头文件#include <stdio.h>int max(int count, ...){ va_list ap;//1)定义一个可变参数,这个地方其实是一个指针,用于访问可变参数中的参数列表 va_start(ap,count);//2)初始化可变参数,并把刚定义的指针指向第一个参数。 int maximum = -1;//假设这都是正整数求最大值,如果不是,就可以把maximum设为最大的负数 int temp,i; for(i = 0; i < count; i++) { temp = va_arg(ap, int);//从可变参数列表指针的当前位置获取一个int型参数,并把指针指向下一个参数。 if(maximum < temp) maximum = temp; } va_end(ap);//结束 return maximum;}int main(int argc,char **argv){ int ret_max = max(9,1,6,21,32,5,68,15,32,62); printf("max in (9,1,6,21,32,5,68,15,32,62) is %d",ret_max); return 0;}