C语言可变参数定义语法及步骤详解
可变参数
C语言的可变参数是什么?顾名思义,就是函数的参数的个数是可以改变的,自定义的,而且理论上是可以无限多个的(但一般不会这样去使用)。C语言的可变参数定义的语法如下:
type functionName(int count, ...){
va_list listName;
va_start( listName, count );
for + va_arg //非固定为for语句
va_end(listName);
}
可变参数语法解析及步骤
将参数的参数声明为可变参数的函数定义与C语言中其它的函数的定义类似,只是参数的声明有所不同,介绍如下:
- int count:count固定为int整型的参数,表示可变参数的个数;
- “...”:三个点的省略号,在函数调用的时候,可以将其替换为实际要传递的参数,多个参数之间使用英文逗号隔开;
- va_list:定义在stdarg.h头文件中的类型,用于声明一个可变参数列表的变量;
- va_start:使用va_start预定义的宏可以用来初始化之前声明的va_list类型的变量,即获取一个参数列表,个数为count,值为之前调用函数时传递的那些替换“...”的参数;
- for+va_arg:for循环和va_arg搭配使用,访问参数列表varList中的参数值,不是一定要使用for循环,只要可以用来访问varList中的参数即可(个人观点,仅供参考);
- va_end:也是stdarg.h中的预定义宏,用于清理参数列表varList中保留的内存;
重点提示:va_list、va_start、va_arg、va_end等是在stdarg.h头文件中定义的,使用之前,需要先将该文件包含include进C文件中。
可变参数实例代码
如下实例中,将定义一个参数为可变参数的函数,用于计算参数的和:
#include "stdio.h"
#include "stdarg.h"
int addArgs(int count, ...){
va_list argList;
va_start(argList, count);
int sum = 0;
for(int i=0; i<count; i++){
sum += va_arg(argList, int);
}
va_end(argList);
return sum;
}
int main() {
int sum = addArgs(5,1,2,3,4,5);
printf("%d\n",sum);
return 0;
}
免责声明:内容仅供参考,不保证正确性。