功能: 宏va_arg()用于给函数传递可变长度的参数列表。

  1. 首先,必须调用va_start() 传递有效的参数列表va_list和函数强制的第一个参数。第一个参数代表将要传递的参数的个数。
  2. 其次,调用va_arg()传递参数列表va_list 和将被返回的参数的类型。va_arg()的返回值是当前的参数。
  3. 再次,对所有的参数重复调用va_arg()
  4. 最后,调用va_end()传递va_list对完成后的清除是必须的。
 1 #include <stdio.h>
 2 #include <stdarg.h>
 3 int sum( int, ... );
 4
 5     int main( void )
 6 {
 7
 8
 9
10       int answer = sum( 4, 4, 3, 2, 1 );
11
12       printf( "The answer is %d\n", answer );
13
14
15
16       return( 0 );
17
18 }
19
20
21
22     int sum( int num, ... )
23 {
24
25       int answer = 0;
26
27       va_list argptr;
28
29       va_start( argptr, num );
30
31       for( ; num > 0; num-- )
32
33         answer += va_arg( argptr, int );
34
35       va_end( argptr );
36
37       return( answer );
38
39 }

这段代码显示10,他们是4+3+2+1。

c语言函数的可选性自变量相关推荐

  1. 快速傅里叶变换c语言函数,C语言实现FFT(快速傅里叶变换)

    while(1); } #include #include /********************************************************************* ...

  2. 二元置信椭圆r语言_一般加性模型的简介、应用举例及R语言操作

    一般加性模型的简介.应用及R语言操作举例前文在"平滑回归举例"中,提到当未知自变量和响应变量间的关系,难以选择合适的参数模型描述二者间的响应状态,或者期望探索二者可能的响应曲线形式 ...

  3. c语言exit在哪个头文件_C语言函数执行成功时,返回1和返回0,究竟哪个好?

    基本上,没有人会将大段的C语言代码全部塞入 main() 函数,更好的做法是按照复用率高,耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数.C语言代码的组合千变万化,因此函数的功能可能会 ...

  4. 【C 语言】C 语言 函数 详解 ( 函数本质 | 顺序点 | 可变参数 | 函数调用 | 函数活动记录 | 函数设计 ) [ C语言核心概念 ]

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

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

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

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

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

  7. C语言 | 函数执行成功时,return 1 还是return 0?

    今天分享的内容是关于函数执行成功,返回0还是1的讨论~ 基本上,没有人会将大段的C语言代码全部塞入 main() 函数,更好的做法是按照复用率高,耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封 ...

  8. 当C语言函数执行成功时,返回1和返回0究竟哪个好?

    基本上,没有人会将大段的C语言代码全部塞入 main() 函数.更好的做法是按照复用率高,耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数.C语言代码的组合千变万化,因此函数的功能可能会 ...

  9. C语言函数返回1和返回0究竟哪个好?

    基本上,没有人会将大段的C语言代码全部塞入 main() 函数.更好的做法是按照复用率高.耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数. C语言代码的组合千变万化,因此函数的功能可能 ...

最新文章

  1. java字符存储,在什么编码是Java字符存储在?
  2. ps添加的阴影怎么去除_【PS摄影后期教程】去除阴影色块三种方法
  3. linux启动脚本 范本,Linux—微服务启停shell脚本编写模板
  4. 网络推广外包专员浅析货拉拉坠车事件后宣布整改增加录音录像功能
  5. 企业网站优化两个重点多加重视!
  6. 转载:MFC 获得各类指针、句柄的方法
  7. Windows 驱动开发资源链接
  8. 架构之美第二章-美丽架构的含义
  9. ios中关于delegate(委托)的使用心得
  10. WPF 带CheckBox、图标的TreeView
  11. win10切第二屏幕_Win10特有的31个快捷键,装逼利器,赶快收藏吧!学习电脑知识...
  12. java 的23种设计模式 之单身狗和隔壁老王的故事
  13. 输入 vscode_【Python技术入门2】Python集成开发环境VSCode搭建
  14. js设置body高度、宽度为浏览器窗口高度、宽度
  15. git commit –a时使用vim编辑提交信息
  16. 玩转 SpringBoot 2 快速整合 Servlet
  17. php面试题做得差,php面试题,你能解决几个?
  18. FFmpeg3.2最新版编译Mediacodec For Android脚本
  19. php通用下载方法,PHP实现打包下载文件的方法示例
  20. 关于属性值书写无效问题

热门文章

  1. Angularjs相关文章地址
  2. ECSHOP让产品浏览历史按照先后进行排序
  3. java 的类型转换方式
  4. [hdu6434]Problem I. Count
  5. 浏览器和服务器 对http请求(post get) url长度限制
  6. web压力测试工具ab安装及使用
  7. 单系统站内信数据库设计思路
  8. SFB 项目经验-18-三台前端服务器同时停止两台后-前端服务启不来
  9. SylixOS iMX6平台I2C总线驱动
  10. vsftpd被selinux阻止