20190723_C中的调用可变函数
今天联系了 C 中调用可变参函数
参考网站:https://www.runoob.com/cprogramming/c-standard-library-stdarg-h.html
代码1: 向被调用函数中传递3个int类型参数,并在被调用函数中输出
//可变参数 test 1
#include <stdio.h>
#include <stdarg.h>
#include <string.h> #pragma warning(disable:4996) void tLog(int sInfo, ...); int main()
{
int x1 = ;
int x2 = ;
int x3 = ; int sInfo = ; tLog(sInfo, x1, x2, x3); system("pause");
return ;
} void tLog(int sInfo, ...)
{
int sx1 = ;
int sx2 = ;
int sx3 = ; //step1: 申请参数列表变量
va_list sArgv; //step2: 申明最后一个传递给函数的已知的固定参数
//这里是 sInfo = 0
va_start(sArgv, sInfo); /* step3: 依次读取固定参数 sInfo 后的 参数 */
sx1 = va_arg(sArgv, int);
sx2 = va_arg(sArgv, int);
sx3 = va_arg(sArgv, int); va_end(sArgv);
printf("运行输出:[%d, %d %d %d]\n", sInfo, sx1, sx2, sx3);
} /*
运行输出:[0, 1 2 3]
*/
代码2:向被调用函数中传递3个char* 类型参数,并在被调用函数中输出
//可变参数 test 1
#include <stdio.h>
#include <stdarg.h>
#include <string.h> #pragma warning(disable:4996) void tLog2(char* sInfo, ...); int main()
{
char* str1 = "abc";
char* str2 = "xyz";
char* str3 = "yyh"; char* sInfo = "start"; tLog2(sInfo, str1, str2, str3); system("pause");
return ;
} void tLog2(char* sInfo, ...)
{
char* s1 = (char*)malloc();
char* s2 = (char*)malloc();
char* s3 = (char*)malloc(); /*
step 1,定义指向参数列表的变量 arg_ptr
申请参数列表变量
*/
va_list sArgv; /*
step 2, 将 arg_ptr 变量初始化,让他指向参数列表得起始 i
// 申明最后一个传递给函数的已知的固定参数
*/
va_start(sArgv, sInfo); /*
step 3, 依次读取固定参数 sInfo 后的 参数
*/
s1 = va_arg(sArgv, char*);
s2 = va_arg(sArgv, char*);
s3 = va_arg(sArgv, char*); /*
step 4,清理工作
*/
va_end(sArgv); printf("运行输出:[%s,%s %s %s]\n", sInfo, s1, s2, s3); } 输出结果
/*
运行输出:[start,abc xyz yyh]
*/
20190723_C中的调用可变函数的更多相关文章
- C中如何调用C++函数、类内函数 \混编\链接
在C中如何调用C++函数的问题,简单回答是将函数用extern "C"声明,当被问及如何将类内成员函数声明时,一时语塞,后来网上查了下,网上有一翻译C++之父的文章可以作为解答,遂 ...
- C++构造函数中不能调用虚函数
在构造函数中调用虚函数,并不会产生多态的效果,就跟普通函数一样. c++ primer 第四版中497页15.4.5构造函数和析构中的虚函数讲到,如果在构造函数或析构函数中调用虚函数,则运行的是为构造 ...
- html中事件调用JavaScript函数时有return与没有return的区别
JAVASCRIPT在事件中调用函数时用return返回值实际上是对window.event.returnvalue进行设置. 而该值决定了当前操作是否继续.当返回的是true时,将继续操作.当返回是 ...
- C#中通过调用Dll函数时,执行一段时间后,就会报内存可能被破坏的错的解决办法
遇到同样的问题,已经解决的:http://blog.csdn.net/youxiazzz12/article/details/24313347
- js中被调用的函数获取调用者对象
通过event.srcElement即可.一直用了很久的传参,终于解决了.
- 09——绝不在构造和析构函数中调用virtual函数
在base class构造期间,virtual函数不是virtual函数. 构造函数.析构函数中不要调用virtual函数.
- [置顶] lua 进阶3--lua文件中调用C++函数
前面讲了一下,C++读取lua文件中的变量,包括一维表.二维表这些,这节讲一下如何在lua文件中去调用C++函数 C++代码如下 #include <stdio.h> extern &qu ...
- 【校招面试 之 C/C++】第10题 C++不在构造函数和析构函数中调用虚函数
1.不要在构造函数中调用虚函数的原因 在概念上,构造函数的工作是为对象进行初始化.在构造函数完成之前,被构造的对象被认为“未完全生成”.当创建某个派生类的对象时,如果在它的基类的构造函数中调用虚函数, ...
- VC/MFC中通过CWebPage类调用javascript函数(给js函数传参,并取得返回值)
转自:http://www.cnblogs.com/javaexam2/archive/2012/07/14/2632959.html ①需要一个别人写好的类CWebPage,将其对于的两个文件Web ...
随机推荐
- nslookup的基本使用
nslookup的基本使用 nslookup:name server lookup 用来查询DNS的. 1:安装nslookup命令 [root@localhost ~]# yum install b ...
- Terminal MultipleXer---终端复用器tmux基本使用
Terminal MultipleXer---终端复用器tmux 使用场景:1.scp大文件 2:编译大文件 3:多窗口对比文件 1.安装tmux [root@localhost ~]# yum in ...
- Java 上传解压zip文件,并且解析文件里面的excel和图片
需求:上传一个zip文件,zip文件里面包含一个excel和很多图片,需要把excel里面的信息解析出来保存到表中,同时图片也转化成base64保存到数据库表中. PS:为了方便不同水平的开发人员阅读 ...
- vue-cli 脚手架安装
1.安装node;选择适合自己系统的文件,下载一路next , a安装成功后,打开运行输入cmd 进入命令行: 在命令行工具中输入 npm -v 检查版本号 如果出现 则安装成功:(npm为node ...
- IDEA 学习笔记之 Python项目开发
Python项目开发: 下载Python: https://www.python.org/downloads/release/python-363/ 安装Python: 配置环境变量(path): C ...
- centos7.x 将普通用户加入sudoers中,获取sudo执行权限
centos7.x 将普通用户加入sudoers中,获取sudo执行权限 0 问题由来 你在提起兴致学习的时候,兴冲冲地往黑洞洞的文本窗口输入下一行: [pan@localhost ~]$ sud ...
- 控制器向视图传参ModelAndView、Model和Map
ModelAndView类 ModelAndView在spring-webmvc-4.3.18.RELEASE.jar包下,当然其他版本也有,所在包如下 对于那些返回String等类型的处理方法,sp ...
- Formform
知识预览 一 Django的form组件 二 Django的model form组件 三 Django的缓存机制 四 Django的信号 五 Django的序列化 回到顶部 一 Django的form ...
- POJ 3616Milking Time
Bessie is such a hard-working cow. In fact, she is so focused on maximizing her productivity that sh ...
- 在web端使用html5访问远程桌面
背景: 2019年12月5日,微软宣布放弃浏览器Edge,转而推出一款新的浏览器,而这款新浏览器将会采用谷歌的Chromium 内核... 好了,反正已经无力吐槽,微软烂尾的项目也不是一个两个了,之前 ...