下面是自我检测的区域,查看题目,自我回答,感觉自己掌握了就可以打勾
什么方法可以使非main函数传递多个参数,并且该函数应该怎么表示,需要用到哪个头文件,这个头文件里面只有3个函数是哪3个函数,分别有什么作用
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
void Sum(int, ...);
void SRDARG_TEXT()
{
Sum(5, 1, 2, 3, 4, 5);
}
void Sum(int Numbers
, ...)
{
int SUM
= 0;
va_list Buff_List
;
va_start(Buff_List
, Numbers
);
for (size_t i
= 0; i
< Numbers
; i
++)
{
SUM
= SUM
+ va_arg(Buff_List
,int);
}
va_end(Buff_List
);
printf("%d", SUM
);
}
=================================================
运行结果
:
topeet@ubuntu
:~/Desktop$
./a
.out
15
记住va_arg这个函数,这个stdarg.h是解决函数传递不确定个参数而生的,我们知道可以为main函数传递不确定个数的参数,存放在argv[]里面,个数就是argc,但是普通的函数于main函数不一样,如果需要传递不确定个参数进去,需要这个头文件,里面就只有三个函数,一个是初始化堆栈的深度(用来存储传递进来的不确定个数的参数),函数是va_start;另一个是出栈va_arg;最后一个是释放堆栈va_end