可变参函数

1、通过例子说明 va_list 的用法

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
int f(int x, int y, int z)
{
return x + y + z;
}
int sum(int size, ...)
{
va_list vp;
int s = 0;
int i = 0;
va_start(vp, size);
for (i = 0; i < size; ++ i) {
s += va_arg(vp, int);
}
va_end(vp);
printf("%d,%d\n", size, s);
}
int main()
{
int a = 1;
int b = 2;
int c = 3;
printf("%d\n", f(a, b , c));
sum(5, 20, 30, 40, 50, 20);
return 0;
}

输出如下:

[xuanmiao@localhost Demo]$ gcc va_list.c -o va_list
[xuanmiao@localhost Demo]$ ./va_list
6
5,160

说明:

va_list vp  声明一个va_list类型的指针变量 vp,指向参数列表;

va_start(vp,size) 使参数列表指针vp指向函数参数列表中的第一个可选参数;

va_arg(vp,int):返回参数列表中指针vp所指的参数,返回类型为int,并使指针vp指向下一个参数。

va_end(vp): 清空参数列表,并置参数指针vp无效。

 

参考博客:

可变参数va_list的理解和使用-gongping11-ChinaUnix博客

c语言之va_list详解 - 君の内存 (adtxl.com)

posted @   轩~邈  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示