今天联系了 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. Windows和Linux下scrapy框架的安装

    windows下安装: 1.安装Anaconda环境管理工具 也可以使用pip安装,值得注意的是如果你使用的是pip安装,你需要解决相应的包依赖(解决依赖一般会让你怀疑人生.怀疑scrapy,建议还是 ...

  2. JavaScript系列:高级函数篇

    前言: 本篇主要是介绍 JavaScript使用函数的高级方法,函数是JavaSCript中最有趣的部分,利用Function特性可以编写出很多非常有意思的代码,本篇主要包括:函数回调,高阶函数以及函 ...

  3. [WP8.1]给Pivot的Header加上颜色

    先上个效果图 以前想实现这个给Pivot加颜色时只找到8的,通过参考8的实现方式,8.1的实现如下,在Pivot的样式上做一些修改,如下图的红框处 另外如果要改Pivot的Header里文字的颜色又要 ...

  4. 软件开发工具(第9章:使用Eclipse进行C/C++开发)

    一.安装MinGW MinGW是指用来生成可执行文件的编译环境,它是开发C/C++项目 的工具集.为了能够使用Eclipse CDT编译且运行C和C++程序,必须 要安装一个C/C++编译器. 下载: ...

  5. laravel学习之旅

    前言:之前写了二篇YII2.0的基本mvc操作,所以,打算laravel也来这一下 *安装现在一般都用composer安装,这里就不讲述了* 一.熟悉laravel (1)如果看到下面这个页面,就说明 ...

  6. Mac 下安装配置MongoDB讲解

    1.访问官网地址是:MongoDB Download Center | MongoDB,一般下载server的Community 版,对于一般开发人员来说已经够用了.   2.点击“DOWNLOAD( ...

  7. 模拟telnet协议C语言客户端程序

    首先要了解telnet协议,一下两篇blog给了我初步的思路 https://www.cnblogs.com/liang-ling/p/5833489.html 这篇有比较基础的介绍 以及IAC命令含 ...

  8. MacOS 安装MysqlDB 问题解决方案( 解决 IndexError: string index out of range)

    pip install MySQL-python时报错如下: Command "python setup.py egg_info" failed with error code 1 ...

  9. 自己动手撸一个LinkedList

    自己动手撸一个LinkedList 1. 原理 LinkedList是基于双链表的动态数组,数据添加删除效率高,只需要改变指针指向即可,但是访问数据的平均效率低,需要对链表进行遍历.因此,Linked ...

  10. Python高阶函数及函数柯里化

    1 Python高阶函数 接收函数为参数,或者把函数作为结果返回的函数为高阶函数. 1.1 自定义sort函数 要求:仿照内建函数sorted,自行实现一个sort函数.内建函数sorted函数是返回 ...