#include<stdio.h>
#include<windows.h>
#include<stdarg.h> // chu理可bian参数
#include<string.h>
/*
=========================================================
time: 2017年2月3日10:20:40
objective: test C language's head file of <stdarg.h>
version: Microsoft Visual C++
author: ChenFei
remark: 日文system 有些字没法打要用pin音代替
=========================================================
*/
/*
void va_start(va_list ap, last_arg) // 初始化 ap,last_arg wei最后一个chuan di gei 函数的已知固定参数
type va_arg(va_list ap, type) // du取下一个lei型wei type的参数。
void va_end(va_list ap) // jie束du取,如果没有diao用 va_end(), ze jie果wei 未定yi
*/
double add(int num, ...) // 可bian参数,至少要定yi一个
{
double last = 0.0;
int i;
va_list argp; // chuang建一个 va_list lei型的dui象
va_start(argp, num); // kai始du取参数,du取num个参数,并把地址放在argp里
for (i = 0;i < num;i++)
{
double temp = va_arg(argp, double); // du取下一个lei型wei double 的参数
printf("%f\n", temp);
last += temp;
}
va_end(argp); // du取jie束
return last;
}
void go(int num, ...)
{
int i;
va_list argp;
va_start(argp, num);
for (i = 0;i < num;i++)
{
char str[50];
strcpy(str, va_arg(argp, char *));
printf("%s\n", str);
}
va_end(argp);
}
int main(void)
{
int x = 10;
double jieguo = 0;
jieguo = add(x, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.10, 10.11); // x不定,如果x wei 10,ze要du取10个参数
printf("last=%f\n", jieguo);
go(5, "notepad", "calc", "tasklist", "ipconfig", "mspaint");
return 0;
}
C标准库学习之<stdarg.h> ——不定参数处理
最新推荐文章于 2024-05-24 18:40:03 发布