一、简介:
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. 通过Easy-UI 树插件实现ArcGIS多个服务图层的图层控制
  2. python语法总结下载_python语法总结1
  3. scanf 接收 空格 输入_【C/C++】【输入】关于scanf:输入空格,多次使用
  4. 挖掘机燃料_2020广东挖掘机工程机械出租公司合作共赢
  5. mysql 组合查询_MySQL组合查询教程
  6. 电脑软件怎么卸载干净_软件分享(一)【电脑】软件卸载工具
  7. 【干货】推荐系统解构.pdf(附下载链接)
  8. Filebeat 输出日志时添加客户端 IP 地址(引用变量)
  9. MySQL 大表优化方案(长文)
  10. postgres stat 记事
  11. ubuntu 安装node.js
  12. ide进行php编程快捷键,PHP IDE phpstorm 快捷键
  13. 军用软件开发周期和文档
  14. 华为p8刷linux系统,华为手机助手ROM一键刷机
  15. android srgb模式,一加3固件官方更新:加入屏幕边缘防误触和sRGB显示模式功能
  16. sklearn.impute.SimpleImputer 数据填充
  17. 2345广告,够了!
  18. 英国沦陷了!2014年英国婴儿名top10,穆罕默德意外夺魁
  19. html5自动淡入淡出图片,利用html5实现图片的淡入淡出效果
  20. 男人30岁之前必须要明白的16条

热门文章

  1. 软件项目开发,交付文档(全)
  2. 苹果手机usb共享网络连接ubuntu连接不上解决方案
  3. 4K秒开,稀缺宝藏影视APP!
  4. c语言将数据写入文件后乱码_C语言 文件写入输出。文件载入后输出是乱码,纠结啊!...
  5. 从零开始使用IDEA创建JAVAWEB工程
  6. 三相有功无功电流检测方法
  7. 力扣(506.539)补8.22
  8. CAFFE源码学习之优化方法solver
  9. 自学C语言(14)循环语句总结(新)
  10. XILINX GTX/GTP 使用小结