一、简介:
c语言在写函数时,如果不确定要输入多少参数,标准库提供了一种方式输入任意长度参数。

二、使用方法
1、添加头文件:#include <stdarg.h>
2、定义:参数上面用“…”代表任意个参数,省略号之前的那个参数是 int,代表了要传递的可变参数的总数
3、访问:在函数定义中创建一个 va_list 类型变量
使用 int 参数和 va_start 宏来初始化 va_list 变量为一个参数列表
使用 va_arg 宏和 va_list 变量来访问参数列表中的每个项
使用宏 va_end 来清理赋予 va_list 变量的内存
以下面求和函数为例:
要求和输入的数量不确定,输出求和的结果

三、示例
1、编写接口和添加头文件

#include <stdio.h>
#include <stdarg.h>int sum(int num, ... )
{...
}

2、添加访问变量参数,测试

#include <stdio.h>
#include <stdarg.h>int mysum(int num, ... )
{va_list valist;int sum = 0;int i;//初始化参数列表va_start(valist, num);//读取参数for (i = 0; i < num; i++){sum += va_arg(valist, int);}//清理参数内存va_end(valist);return sum;
}int main()
{printf("sum = %d\n", mysum(4, 2,3,4,5));printf("sum = %d\n", mysum(3, 5));return 0;
}

c语言函数任意个数参数的实现相关推荐

  1. python支持任意大的数字_Python实现接受任意个数参数的函数方法

    这个功能倒也不是我多么急需的功能,只是恰好看到了,觉得或许以后会用的到.功能就是实现函数能够接受不同数目的参数. 其实,在C语言中这个功能是熟悉的,虽说实现的形式不太一样.C语言中的main函数是可以 ...

  2. C语言 函数不定长参数 - C语言零基础入门教程

    目录 一.前言 二.函数不定长参数简介 1.va_start 2.va_arg 3.va_end 三.自定义不定长参数的函数 1.va_start/va_arg/va_end 案例一 2.va_sta ...

  3. C语言 函数不定长参数 ##__VA_ARGS__经典案例 - C语言零基础入门教程

    目录 一.##__VA_ARGS__简介 二.##__VA_ARGS__经典案例 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.## ...

  4. C语言 函数缺省参数 - C语言零基础入门教程

    目录 一.函数简介 1.函数声明 2.函数定义 3.函数调用 4.函数形参和实参 二.函数缺省参数 1.函数全缺省参数 2.函数半缺省参数 三.注意事项 四.猜你喜欢 零基础 C/C++ 学习路线推荐 ...

  5. c语言 函数多个参数,C语言函数可变参数

    C语言函数可变参数教程 可变参数的函数必须至少有一个强制参数,可选参数的类型可以变化.可选参数的数量由强制参数的值决定,或由用来定义可选参数列表的特殊值决定. 对于每一个强制参数来说,函数头部都会显示 ...

  6. c语言函数声明定义参数命名,C语言函数声明与定义

    C语言函数声明与定义教程 在 C语言函数声明与定义 语法 type funcName(paramType1 param1, paramType2 param2){ // 执行语句... return ...

  7. c语言函数可变长参数,一种使用变长参数为C程序构造灵活回调函数的方法

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 int twice(void *arg, va_list ap) { apply_func *func = va_arg(ap, apply_func * ...

  8. C语言函数中的参数有const的问题

    照理说有const的参数怎么还能执行*strDest++=*strSrc++;呢 请大师解答 char* Copy(char* strDest,const char* strSrc) { char* ...

  9. c语言输入10个整数求平均数,C语言输入任意个数求平均数

    满意答案 shanaqin9e 2013.06.17 采纳率:42%    等级:12 已帮助:6117人 #include #include int main(void) { int *point, ...

最新文章

  1. 【强哥推荐】VSCode常用快捷键配置文件表,记得收藏
  2. Docker for mac安装
  3. Py之matplotlibseaborn :matplotlibseaborn绘图的高级进阶之高级图可视化(基础图(直方图等),箱线图、密度图、小提琴图等)简介、案例应用之详细攻略
  4. 国际主流云厂商生存画像:三大赛道愈发清晰
  5. php页面引用公共文件,WeiPHP插件模板中快速引入公共模板文件
  6. 大数据教程(10.3)web日志数据清洗
  7. java安装错误咋办_win7系统安装Java出现错误的解决方法
  8. web前端技术分享文档
  9. PyCharm小技巧分享—主菜单消失再显示
  10. 案例丨GW-PBM-PN网关将Profibus-DP从站设备集成入PROFINET网络
  11. javaweb创建页面书签链接
  12. TPYBoard中编译MicroPython并利用DfuSe经行固件烧录
  13. 小米云服务器怎么更新文件,小米云服务使用手册
  14. spring boot实现验证码登录
  15. python操作剪贴板
  16. uniapp消息推送(个推-PHP服务端推送)
  17. Plotly学习 3D三维轴的设置
  18. 2.zookeeper
  19. Centos查看端口及防火墙
  20. CTFHUB-WEB-XSS【05】反射型

热门文章

  1. LINUX内核内存屏障
  2. 嵌入式linux platform设备驱动
  3. 狂神JUC——CAS
  4. 并发编程的艺术 读书笔记
  5. Cartov for Mac 1.0.2 无尽旅图
  6. 修改VirtualBox中mac的分辨率
  7. Android截屏分享
  8. 2.基于ITIL的IT服务管理基础篇 --- IT服务管理的背景
  9. 初学Singleton单例模式
  10. 计算机录入大赛,计算机文字录入PPT幻灯片制作大赛策划书