编写可变参数函数 c语言,C语言中编写可变参数函数
通过stdarg.h头文件为函数提供了定义可变参数列表的能力。声明一个可变参数的函数类似:
void f1(int n,...);
其中n表示参数列表个数,而用省略号来表示未知参数列表。stdarg.h中提供了一个va_list类型,用于存放参数。一个大概的使用过程类似:
void f1(int n,...)
{
va_list ap;
va_start(ap,n); //初始化参数列表
double first=va_arg(ap,double); //取第一个参数
int second=va_arg(ap,int); //取第二个参数
...
va_end(ap); //清理工作
}
看一个求和的例子:
#include < stdio.h > #include < stdarg.h >
double sum( int ,
);
int main( void
)
{
double
s,t;
s
= sum( 3 , 1.1 , 2.2 , 13.3
);
t
= sum( 6 , 1.1 , 2.1 , 13.1 , 4.1 , 5.1 , 6.1
);
printf(
" return value for "
\
" sum(3,1.1,2.2,13.3): %g\n "
,s);
printf(
" return value for "
\
" sum(6,1.1,2.1,13.1,4.1,5.1,6.1): %g\n "
,t);
return 0
;
}
double sum( int lim,
)
{
va_list ap;
double total = 0
;
va_start(ap,lim);
int
i;
for (i = 0 ;i < lim;i ++
)
total
+= va_arg(ap, double
);
va_end(ap);
return
total;
}
C语言对可变参数的使用还是有点麻烦,不如ruby和java简便。比如ruby中定义并使用可变参数参数:
def sum(*e)
e.inject{|sum,i| sum+=i}
end
sum(1,2,3,4,5)=>15
编写可变参数函数 c语言,C语言中编写可变参数函数相关推荐
- C语言——选择控制结构 寻找中位数v1.0编写一个函数返回三个整数中的中间数。函数原型:int mid(int a, int b, int c);功能是返回a,b,c三数中大小位于中间的一个数。
寻找中位数v1.0 编写一个函数返回三个整数中的中间数. 函数原型:int mid(int a, int b, int c); 功能是返回a,b,c三数中大小位于中间的一个数. 程序运行结果示例1: ...
- R语言数据框中的stringsAsFactors参数
R语言数据框中的stringsAsFactors参数 数据框基本建立 参数:stringsAsFactors 数据框基本建立 (注:本文章中的Name变量区分大小写) Name <- c(&qu ...
- matlab如何输出一个函数的图像,在matlab中如何输出一个函数的图像
点击查看在matlab中如何输出一个函数的图像具体信息 答:A. imread imread函数用于读入各种图像文件,其一般的用法为 [X,MAP]=imread('filename','fmt')其 ...
- 为了避免360等浏览器的页面缓存影响到系统的参数,可以在对应页面中添加随机参数。
为了避免360等浏览器的页面缓存影响到系统的参数,可以在对应页面中添加随机参数. 如window.open('text.aspx?rid='+ Math.round(Math.random() * 1 ...
- c语言 swap交换函数_重审C中老生常谈的swap函数交换数值
概览 本文内容是关于C语言参数传值,以及x86底层实现的计算机科学. 包含了原理速览以及代码示例. 引言 如果你学习过C,可能会对经典的swap函数问题记忆深刻.简单的参数传值并不能在函数外部完成两个 ...
- 函数指针--Nginx和Redis中两种回调函数写法
1.Nginx和Redis中两种回调函数写法 #include <stdio.h>//仿Nginx风格 //结构外声明函数指针类型 typedef void (*ngx_connectio ...
- java 自定义函数的调用_Java/Android中的函数调用回调函数自定义回调函数
在做Android自定义控件时遇到要自定义回调函数的问题,想想自己还暂时没有那么精深的技术,赶紧返过头回来再重新研究Java中回调函数的问题.然而不幸的是,网上太多杂乱的帖子和博客都是转来转去,而且都 ...
- python中求和公式是什么函数_Python的math库中,用于求和的函数是( )。
[单选题]确定兴利库容 V 兴 ,已知某水库为一回运用水库,其一次蓄水量为 V 1 =300 万 m 3 ,一次供水量为 V 2 =150 万 m 3 . [ ]. [单选题]hAB大于0说明B点的高 ...
- 用PHP编写圆的半径和周长,在C++中编写程序输入半径计算圆的周长和面积
现在计算机语言应用是很多的,如果你使用电脑又会使用计算机语言那就是更加的吃香了,今天我们就来说说C语言,在C++中编写程序输入半径计算圆的周长和面积. 工具/材料 电脑.VC++软件 我们首先要下载安 ...
- python 超参数_完整介绍用于Python中自动超参数调剂的贝叶斯优化
完整介绍用于Python中自动超参数调剂的贝叶斯优化-1.jpg (109.5 KB, 下载次数: 0) 2018-7-4 23:45 上传 调剂机器学习超参数是一项繁琐但至关重要的任务,因为算法的性 ...
最新文章
- android不调用系统发送短信,android之两种方式调用短信发送接口
- 第六回严重鄙视360安全卫士
- origin数据平滑_独门绝技!Origin挑战绘制细胞分化轨迹热图
- 混淆工具Dotfuscator基本使用
- Linux权限中的大写s,Linux文件权限、用户、组、文本实操二
- 【机器学习】最简单易懂的行人检测功能实现
- 支付业务流程图--扫码付
- research meeting updates points
- 工作154:代码之解析position 解决
- 尼康相机报错err_数码相机遇到这12种错误,自己动手就能解决,再不用找人维修...
- 银河麒麟通过命令行安装软件没有安装上
- Spark On YARN内存分配
- Latex排版大括号让其左对齐
- JAVAWEB-NOTE01
- 九章算法 | 苏州微软面试题:程序检查
- Lua 5.1.3源代码分析之词法分析[1]
- vue通过点击按钮弹出新窗口打开html文件
- Android开发——使用Jword生成本地word文档
- 计算机用户名更改不了,分享简单几步解决win10电脑用户名改不了的问题
- FLEX提高篇--------ShareObject对象详解
热门文章
- 【Rsync + inotify】 实时同步远程服务器目录文件
- 5、MySQL通用查询日志(General Query Log)
- 16、子查询改写为表连接
- MySQL读写分离中间件解决
- 离散数学及其应用傅彦pdf_《离散数学及其应用》第一章 计算机课题
- python网络编程视频教程_Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密)...
- 你还在使用 try-catch-finally 关闭资源?不太优雅~
- Qt creator 编译错误 :cannot find file .pro qt
- struts2教程(10)
- 映射文件xxx.hbm.xml下的各元素结构