可变参函数
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无效。
参考博客:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)