功能: 宏va_arg()用于给函数传递可变长度的参数列表。
- 首先,必须调用va_start() 传递有效的参数列表va_list和函数强制的第一个参数。第一个参数代表将要传递的参数的个数。
- 其次,调用va_arg()传递参数列表va_list 和将被返回的参数的类型。va_arg()的返回值是当前的参数。
- 再次,对所有的参数重复调用va_arg()
- 最后,调用va_end()传递va_list对完成后的清除是必须的。
#include <stdio.h>
#include <stdarg.h>
int sum( int, ... ); int main( void )
{ int answer = sum( , , , , ); printf( "The answer is %d\n", answer ); return( ); } int sum( int num, ... )
{ int answer = ; va_list argptr; va_start( argptr, num ); for( ; num > ; num-- ) answer += va_arg( argptr, int ); va_end( argptr ); return( answer ); }
这段代码显示10,他们是4+3+2+1。
c语言函数的可选性自变量的更多相关文章
-
[ASM C/C++] C语言函数的可选性自变量
函数的可选性自变量 C语言允许定义自变量数量可变的函数,称为variadic函数.variadic函数需要固定数目的强制性自变量,后面是数量可变的可选性自变量. 也就是说必须至少有一个强制性 ...
-
人生苦短之Python函数的健壮性
如何评论一个开发代码写的好?清晰简洁明了?No,No,一个处女座就可以写出来了,整齐地代码,详细的注释不是代码好的标准,应该说不是最重要的标准.代码写的是否健壮才是检验的重要标准. 代码的健壮性: 当 ...
-
C#委托与C语言函数指针及函数指针数组
C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...
-
Go 语言函数
函数是基本的代码块,用于执行一个任务. Go 语言最少有个 main() 函数. 你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务. 函数声明告诉了编译器函数的名称,返回类型,和参数. ...
-
Go语言函数
目录 函数定义 函数返回多个值 函数参数 Go 语言函数值传递 Go语言函数引用传递 函数用法 函数作为值 匿名函数 闭包 方法 不定参数的函数 init函数 内建函数 函数调用机制 总结 函数定义 ...
-
C语言函数库
C语言函数库 分类函数目录函数进程函数诊断函数接口子程序输入输出 str字符串操作函数mem操作存贮数组 数学函数 时间日期函数 转换函数 分类函数,所在函数库为ctype.h[top] int is ...
-
Matlab调用C语言函数
Matlab调用C语言函数 如果我有一个用C语言写的函数,实现了一个功能,如一个简单的函数:double add(double x, double y) { return x + y ;}现在我想要在 ...
-
GO语言学习(十二)Go 语言函数
Go 语言函数 函数是基本的代码块,用于执行一个任务. Go 语言最少有个 main() 函数. 你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务. 函数声明告诉了编译器函数的名称,返回 ...
-
05. Go 语言函数
Go 语言函数 函数是组织好的.可重复使用的.用来实现单一或相关联功能的代码段,其可以提高应用的模块性和代码的重复利用率. Go 语言支持普通函数.匿名函数和闭包,从设计上对函数进行了优化和改进,让函 ...
随机推荐
-
sublime使用
显示侧板的文件夹: View -> Side Bar 菜单[project]->add folder to project.把文件夹显示在左边的sidebar上. 安装插件: packa ...
-
Android应用性能优化笔记(java代码优化)
Java代码优化 缓存结果: 如果计算代价过高,最好把过去的结果缓存起来. 伪代码如下: result=cache.get(n); //输入参数n作为键 if(result==nul ...
-
如何使用UDP进行跨网段广播(转)
源:http://blog.chinaunix.net/uid-22670933-id-3716646.html 广播域首先我们来了解一下广播域的概念.广播域是网络中能接收任一台主机发出的广播帧的所有 ...
-
(28)初识struts框架
案例剖析中介绍了一个自己写的mystruts框架,这里开始简单的认识struts框架. 1.先看一个简单的struts开发的例子来熟悉一下流程 Struts就是基于mvc模式的框架! (struts其 ...
-
NOIP2013提高组 T2 火柴排队
一开始看也想不到这居然要用到逆序对,归并排序. 先来看看题目: 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间 ...
-
8 Oracle语句
1.select name from v$datafile; 用sys方式登陆,查询所有表空间存放的物理路径 2.create tablespace DEMO_TBS datafile 'D:/TBS ...
-
面试被问http协议?这篇文章足够覆盖所有相关问题!
http使用面向连接的TCP作为传输层协议.http本身无连接. 请求报文 CRLF是回车换行 方法为GET的请求报文 方法为POST的请求报文 方法 OPTIONS:这个方法 ...
-
去除tableView表头悬浮
UITableView设置为UITableViewStyleGrouped样式会出现多余间距,以前遇到过这样的问题,自己以为不难,只是一个知识点,也没太在意 ,今天又碰到了,发现自己把它给忘了,所以还 ...
-
Oracle中 如何用一个表的数据更新另一个表中的数据
准备阶段 1.建表语句: create table table1( idd varchar2(10) , val varchar2(20) ); create table table2( idd va ...
-
Multi-Thread 1: how to use synchronized
1. synchronized If two threads are using the same function( here we use output to print out string) ...