c语言 可变参数函数使用,C语言中可变参数函数使用(va_list)

#include

#include "stdlib.h"

#include "assert.h"

using namespace std;

//可变长参数的学习

#include

#define END -1

int va_sum(int first_num, ...)

{

// (1) 定义参数列表

va_list ap;

// (2) 初始化参数列表

va_start(ap, first_num);

int result = first_num;

int temp = 0;

// 获取参数值

while ((temp = va_arg(ap, int)) != END)

{

result += temp;

}

// 关闭参数列表

va_end(ap);

return result;

}

int va_printf1(char* var1, ...)

{

// (1) 定义参数列表

va_list ap;

// (2) 初始化参数列表

va_start(ap, var1);

char *p, *sval;

int ival;

double dval;

for (p = var1; *p; p++)

{

if (*p != '%')

{

putchar(*p);

continue;

}

switch (*++p)

{

case 'd':

ival = va_arg(ap, int);

printf("%d", ival);

break;

case 'f':

dval = va_arg(ap, double);

printf("%f", dval);

break;

case 's':

sval = va_arg(ap, char *);

printf("%s", sval);

//for (sval = va_arg(ap, char *); *sval; sval++)

//putchar(*sval);

break;

default:

putchar(*p);

break;

}

}

// 关闭参数列表

va_end(ap);

return true;

}

main函数……

int main()

{

int sum_val = va_sum(1, 2, 3, 4, 5, END);

printf("sum_val 可变长参数测试 %d\n", sum_val);

va_printf1("%d %f %s %s", 1, 2.0, "you ", "how do you do ");

cout << endl;

system("pause");

return 0;

}

测试输出:

e9c7f8d4f9200386ad47afb15cdfc2bb.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值