今天联系了 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中的调用可变函数的更多相关文章

  1. C中如何调用C++函数、类内函数 \混编\链接

    在C中如何调用C++函数的问题,简单回答是将函数用extern "C"声明,当被问及如何将类内成员函数声明时,一时语塞,后来网上查了下,网上有一翻译C++之父的文章可以作为解答,遂 ...

  2. C++构造函数中不能调用虚函数

    在构造函数中调用虚函数,并不会产生多态的效果,就跟普通函数一样. c++ primer 第四版中497页15.4.5构造函数和析构中的虚函数讲到,如果在构造函数或析构函数中调用虚函数,则运行的是为构造 ...

  3. html中事件调用JavaScript函数时有return与没有return的区别

    JAVASCRIPT在事件中调用函数时用return返回值实际上是对window.event.returnvalue进行设置. 而该值决定了当前操作是否继续.当返回的是true时,将继续操作.当返回是 ...

  4. C#中通过调用Dll函数时,执行一段时间后,就会报内存可能被破坏的错的解决办法

    遇到同样的问题,已经解决的:http://blog.csdn.net/youxiazzz12/article/details/24313347

  5. js中被调用的函数获取调用者对象

    通过event.srcElement即可.一直用了很久的传参,终于解决了.

  6. 09——绝不在构造和析构函数中调用virtual函数

    在base class构造期间,virtual函数不是virtual函数. 构造函数.析构函数中不要调用virtual函数.

  7. [置顶] lua 进阶3--lua文件中调用C++函数

    前面讲了一下,C++读取lua文件中的变量,包括一维表.二维表这些,这节讲一下如何在lua文件中去调用C++函数 C++代码如下 #include <stdio.h> extern &qu ...

  8. 【校招面试 之 C/C++】第10题 C++不在构造函数和析构函数中调用虚函数

    1.不要在构造函数中调用虚函数的原因 在概念上,构造函数的工作是为对象进行初始化.在构造函数完成之前,被构造的对象被认为“未完全生成”.当创建某个派生类的对象时,如果在它的基类的构造函数中调用虚函数, ...

  9. VC/MFC中通过CWebPage类调用javascript函数(给js函数传参,并取得返回值)

    转自:http://www.cnblogs.com/javaexam2/archive/2012/07/14/2632959.html ①需要一个别人写好的类CWebPage,将其对于的两个文件Web ...

随机推荐

  1. 国庆佳节第四天,谈谈我月收入增加 4K 的故事

    01.起承 在我下定决心改变的这将近 1 年的时间里,遇到了很多很多有故事的人,以及有趣的事.自我的认知改变特别大!尤其是收入,比去年同时期增加了 4K. 4K,可能也就买 100 斤猪肉.但是对于身 ...

  2. Python3爬虫基础实战篇之机票数据采集

    项目:艺龙国内机票实时数据爬虫 使用模块:requests(请求模块),js2py(js执行模块),json(解析json),xpath(解析网页). 项目流程: 分析网站数据来源. 编写爬虫脚本. ...

  3. Java基础学习笔记(四) - 认识final关键字、权限修饰符和内部类

    一.final关键字 为什么要使用 final 关键字? 通过继承我们知道,子类可以重写父类的成员变量和方法.final 关键字可以用于修饰父类,父类成员变量和方法,使其内容不可以被更改. 1.被修饰 ...

  4. IDEA 学习笔记之 Spark/SBT项目开发

    Spark/SBT项目开发: 下载Scala SDK 下载SBT 配置IDEA SBT:(如果不配置,就会重新下载SBT, 非常慢,因为以前我已经下过了,所以要配置为过去使用的SBT) 新建立SBT项 ...

  5. request.getAttribute()和request.getParameter()

    request.getParameter()取得是通过容器的实现来取得通过类似post,get等方式传入的数据,request.setAttribute()和getAttribute()只是在web容 ...

  6. SpringBoot第二十五篇:SpringBoot与AOP

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11457867.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   作者在实际 ...

  7. Java读源码之ThreadLocal

    前言 JDK版本: 1.8 之前在看Thread源码时候看到这么一个属性 ThreadLocal.ThreadLocalMap threadLocals = null; ThreadLocal实现的是 ...

  8. 利用npm安装/删除/查看包信息

    查看远程服务器上的包的版本信息 npm view webpack version //查看npm服务器上包webpack的最新版本 npm view webpack versions //查看服务器上 ...

  9. TCP/IP协议介绍

    一.什么是TCP/IP TCP/IP是一类协议系统,它是用于网络通信的一套协议集合 TCP/IP是供已连接因特网的计算机进行通信的通信协议 TCP/IP指传输控制协议/网际协议 TCP/IP定义了电子 ...

  10. C语言入门-结构类型

    一.声明结构类型 #include <stdio.h> int main(int argc, char const *argv[]) { // 声明结构类型 struct date { i ...