首页 > 其他分享 >【C】变长参数的使用

【C】变长参数的使用

时间:2023-07-31 23:24:56浏览次数:30  
标签:va ... list valist num 参数 使用

1、可变参数函数定义

必需显式定义至少一个参数,不能直接定义...

LOCAL void reset_param(guint num, ...) {}

一般来说,第一个参数传入可变参数的个数。

2、可变参数的使用

需要用到stdarg.h中的1个结构体和3个宏定义:

  • va_list:用来接收所有的可变参数
  • va_start(va_list, type):type传入...的前一个参数名
  • va_arg(va_list, returnType):returnType表示从可变参数列表中获取到的值类型
  • va_end(va_list):清空va_list变量,使得指针不可用,和va_start配对使用

3、示例

LOCAL void reset_param(guint num, ...)
{
    va_list valist;
    va_start(valist, num);
    for (guint i = 0; i < num; i++) {
        memset(va_arg(valist, gchar *), 0, INPUT_LEN);
    }
    va_end(valist);
}

标签:va,...,list,valist,num,参数,使用
From: https://www.cnblogs.com/servlet-context/p/17595276.html

相关文章

  • SwiftUI的认识与使用
     SwiftUI简介SwiftUI是苹果推出的一个新的UI框架,它使用了声明的方式,通过视图,基础控件和布局控件来进行页面的开发。SwiftUI具有跨平台性,一份SwiftUI代码可以同时跑在iOS、macOS、tvOS、watchOS平台上。SwiftUI编写的页面代码更简洁,广泛使用链式调用。SwiftUI视图和UIKit视图......
  • Exsi 安装OpenWRT并使用gparted扩容
    Exsi安装OpenWRT并使用gparted扩容所有操作均基于MACOS参考资料下载OpenWRT镜像镜像库地址:https://mirror.sjtu.edu.cn/openwrt/releases/[VERSION_ID]/targets/x86/64/22.03.5下载地址cd~\Downloadswgethttps://mirror.sjtu.edu.cn/openwrt/releases/22.03.5/targ......
  • android中使用startActivityForRes…
    网上找的一个通俗易懂,放在这以后好查阅假设:我这里有两个Activity:A和B,从A中向B中传递数据的时候采用的是Bundle封装数据,然后从A中跳转到B中,当B有需求将数据封装起来回传给A并跳转回A。那么A中接收数据时还要先判断Bundle是否为空,因为第一次访问A的时候(即B还没有回传的时候),Bundle......
  • Android 使用【AIDL】调用外部服务
    在Android中有一种服务说是服务其实倒不如说是一个接口,这个接口名为:AndroidInterfaceDefinitionLanguage,这个接口可提供跨进程访问服务,英文缩写为:AIDL。此种服务的好处在于,多个应用程序之间建立共同的服务机制,通过AIDL在不同应用程序之间达到数据的共享和数据相互操作,下......
  • [Pwn之路]根据所给库,获得远程同环境——使用patchelf的正确姿势
    原文:https://www.freebuf.com/sectool/366854.html存自己这里方便看。0x00前言如何修改本地pwn文件和题目所给环境一致,从而进行调试,这是从学习堆开始就遇到的心头之患。从那以后,直到今天参加完miniLCTF,为了复现一道题目才把这个问题解决掉。网上的博客,参差不齐,由于本人不才,导......
  • android画图-----shape的使用文档…
    在GradientDrawable1试图中终于把shape学会了,以前总是似懂非懂,现在终于把里面的东西搞清楚了,同时也挺佩服谷歌的用心,故意设置一些陷阱吧,不认真对待还真以为没有啥效果呢。setContentView(R.layout.shape_drawable_1)shape_drawable_1代码如下:<ScrollViewxmlns:android="htt......
  • 使用OpenFeign传递二进制流
    在现代的分布式系统中,服务之间的通信变得越来越普遍。OpenFeign是一个流行的JavaHTTP客户端工具,它简化了在微服务架构中进行服务间通信的过程,本文将简单介绍如何使用OpenFeign传递二进制流。什么是OpenFeign?OpenFeign是一个用于声明式、模板化的HTTP客户端的Java库。它简化了编......
  • C++中不支持strdup(),使用_strdup()
    1.问题C4996 'strdup':ThePOSIXnameforthisitemisdeprecated.Instead,usetheISOCandC++conformantname:_strdup.Seeonlinehelpfordetails. Project1 G:\VS\Project1\Project1\MyString.cpp 802.原因错误C4996是一个编译器警告,它指示在代码中使用了一个......
  • uuid的设计与使用
    UUID全称UniversalUniqueIdentifier是一串128位数字码,用于唯一识别网络对象或者事件。核心思想是结合机器的网卡、当地时间、时间戳,随机数,机器号来生成GUID 项目背景:项目中存在公司基础信息,不同产线的资质信息,合同,银行账号等信息新增场景,需要有一个sid标识公司,使用pid标......
  • Swagger_介绍和使用方式
         然后在浏览器上访问localhost:8080/doc.html就可以测试接口了......