函数参数个数不确定时使用va_start
今天在网上看程序时忽然发现别人的函数参数中有省略号,甚是吃惊,发现其函数中使用了va_start,经过查资料大概明白其用法,个人觉得很好用!
#include <stdio.h>
#include <stdarg.h> int fun(int a, int b, ...)
{
int sum = 0;
int para1; //参数类型要与调用时的相同
int para2; va_list va; //定义一个字符指针 va_start(va, b); //将va指向参数b后第一个参数 para1 = va_arg(va, int); //读取b后面的第一个参数
para2 = va_arg(va, int); //读取b后面的第二个参数 va_end(va); //清空va sum = a + b + para1 + para2; return sum;
} void main(void)
{
int sum = 0; sum = fun(1, 2, 3, 4); printf("sum = %d\n", sum); return 0;
}
函数参数个数不确定时使用va_start的更多相关文章
- JavaScript进阶系列04,函数参数个数不确定情况下的解决方案
本篇主要体验函数参数个数不确定情况下的一个解决方案.先来看一段使用函数作为参数进行计算的实例. var calculate = function(x, y, fn) { return fn(x, y) ...
- [ActionScript 3.0] AS3 获取函数参数个数
function createFunction(param1:String,param2:String,param3:int=0):void { trace(arguments.length);//a ...
- python基础-python函数参数为print语句时的输出
函数参数输入print语句,调用函数时都会执行print语句,实例: def outer(func): def inner(): print("我是内层函数!") return i ...
- 函数,参数数组params与数组参数,结构函数
1.函数 static 返回值类型 函数名(形参1,形参2,...){ 函数体; return 返回值; } 无返回值,则static void 函数名(){ } stat ...
- 深入理解javascript函数参数与闭包(一)
在看此文章,希望先阅读关于函数基础内容 函数定义与函数作用域 的章节,因为这篇文章或多或少会涉及函数基础的内容,而基础内容,我放在函数定义函数作用域 章节. 本文直接赘述函数参数与闭包,若涉及相关知识 ...
- JavaScript进阶系列01,函数的声明,函数参数,函数闭包
本篇主要体验JavaScript函数的声明.函数参数以及函数闭包. □ 函数的声明 ※ 声明全局函数 通常这样声明函数: function doSth() { alert("可以在任何时候调 ...
- Python 可变长度函数参数
func( *tuple_grp_nonkw_args, **dict_grp_kw_args ) 在编程的过程中,我们可能会遇到函数参数个数不固定的情况.这时就需要使用可变长度的函数参数来实现我们的 ...
- 你不知道的JavaScript(十一)函数参数
JavaScript函数的定义和使用非常简单,我们看一下下面的代码: <script type="text/javascript"> var sum = functio ...
- C 函数参数 char **s与char *s[]
本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/126 先来看一个小例子 : 编写函数遍历一个整型数组的元素,数组 ...
随机推荐
- MySQLdb和PIL安装
最近将个人博客部署到树莓派上海真是颇费周折,尤其是在MySQLdb和PIL的安装上 MySQLdb 先说Windows吧(比较简单) 直接pip安装即可或者下载编译版更方便:http://source ...
- flume 启动,停止,重启脚本
#!/bin/bash #echo "begin start flume..." #flume的安装根目录(根据自己情况,修改为自己的安装目录) path=/sysware/apa ...
- PHP工作笔记:离线执行php任务
直接上代码,主要函数 ignore_user_abort(true);这个函数忽略了终端被关闭(打开的网页被关闭),后面 getfiles()这函数是执行采集任务的自定义函数,后面又配置了下路径打开写 ...
- Unix系统中system函数的返回值
网上关于system函数的返回值说明很多很详细但却不直观,这里搬出apue 3rd Editon中实现system函数的代码来说明其返回值. #include <sys/wait.h> # ...
- C与C++基础知识补遗
本随笔用来记载项目开发中遇到的以前没掌握的C/C++基础知识 void * buffer; 无类型指针,可以指向任何类型数据.ANSI标准规定无类型指针不能进行算法,而GNU规定无类型指针算法操作与c ...
- C#运行批处理【转】
/// <summary> /// C#运行bat文件 /// </summary> /// <param name="batPath">< ...
- Django中间件(勾子函数)使用
中间件 Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出.中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django ...
- mysql报错注入手工方法
以前觉得报错注入有那么一长串,还有各种concat(),rand()之类的函数,不方便记忆和使用,一直没怎么仔细的学习过.这次专门学习了一下,看了一些大牛的总结,得到一些经验,特此记录下来,以备后续巩 ...
- SSH 首次登录太慢问题
这两天在使用 Docker 做测试,发现新建的容器在首次 ssh 登录的时候经常超时,我们简单将超时时间设置成60秒,但仍然会偶尔超时.所以简单延迟超时时间此路不通. 于是想到是否可以通过修改 ssh ...
- oracle管道函数的用法
oracle管道函数是一类特殊的函数,oracle管道函数返回值类型必须为集合,下面将介绍oracle管道函数的语法. 在普通的函数中,使用dbms_output输出的信息,需要在服务器执行完整个函数 ...