目录
前言
一、使用方法
二、示例代码
前言
在开发的过程中,有时候会遇到函数中参数不固定的情况,这篇博客主要记录下C语言中的可变参数。
一、使用方法
在C语言中,可变参数是指函数的参数数量是可变的,可以根据函数的调用情况传入不同数量的参数。可变参数的处理通常使用了C语言提供的stdarg.h
头文件中的宏和函数。
下面是在C语言中处理可变参数的一般步骤:
- 在函数声明中使用省略号
...
表示函数具有可变参数。 - 在函数定义中使用
va_list
类型的变量声明一个参数列表。 - 使用
va_start
宏初始化参数列表。 - 使用
va_arg
宏依次访问参数列表中的参数。 - 使用
va_end
宏结束参数列表的访问。
下面写了一个Demo,说明了如何在C语言中使用可变参数。
二、示例代码
#include <stdio.h>
#include <stdarg.h>
// 定义一个可变参数函数,计算可变参数的和
int sum(int num, ...) {
va_list args;
int total = 0;
// 初始化参数列表
va_start(args, num);
// 访问参数列表中的参数
for (int i = 0; i < num; i++) {
total += va_arg(args, int);
}
// 结束参数列表的访问
va_end(args);
return total;
}
int main(int argc, const char *argv[]) {
printf("和: %d\n", sum(3, 10, 20, 30)); // 输出:Sum: 60
printf("和: %d\n", sum(5, 1, 2, 3, 4, 5)); // 输出:Sum: 15
return 0;
}
在上面的示例中,sum
函数接受一个整数参数num
,表示可变参数的数量,然后使用va_list
类型的变量args
声明一个参数列表。在函数体内部,使用va_start
宏初始化参数列表,然后使用va_arg
宏逐个访问参数列表中的参数,并计算它们的和。最后,使用va_end
宏结束参数列表的访问。