C 可变参数

mac2026-03-05  5

参考链接:https://www.runoob.com/cprogramming/c-variable-arguments.html 怎样让函数接受不同个数的参数呢,可以通过stdarg.h头文件提供的函数和宏来实现。此头文件提供了实现可变参数功能相关的函数和宏。

可变参数的形式

//定义 int func(int num ,...){//真真的就是这样定义的,就是有省略号,前面除了表示接受个数的num外,还可以自定义其他参数 …… } //使用 result=func(2,a1,a2);//在使用这个函数的时候,第一个值必须时int类型,代表这次传递参数的个数

过程

#include <stdio.h> #include <stdarg.h> int add(int num ,...){ //在函数中定义一个va_list类型变量,该类型是由stdarg.h头文件中定义的 va_list valist; int result =0; //使用 add()中的int 参数和va_start宏来初始化va_list类型变量为一个参数列表,宏va_start是一个定义在stdarg.h中的函数 va_start(valist,num);//初始化后会把所有接收到的可变参数都放在了valist中 //使用va_arg宏和va_list类型变量来访问参数列表中每一个项 int i; for(i=0;i<num;i++){ result+=va_arg(valist,int);//i并不参与 } //当对可变参数的访问结束后,使用va_end来清理赋予va_list类型变量的内存 va_end(valist); return result; } int main(){ //使用 printf("结果是:%d",add(2,10,10)); printf("结果是:%d",add(3,10,10,10)); }
最新回复(0)