可变类型参数

将形参设为可变类型参数,首先自己的函数要先有一个确定的形参,然后剩余的参数为 ...

用到三个宏,va_list, va_start, va_arg .

va_list: 当作一个类型,底层是一个char* 被 typedef

va_strat: 先定义一个va_list 类型的变量,假设是 s ,然后 va_strat( s,n),意思是将s这个指针指向第一个形参的地址处。

va_arg: 用法是将定义的va_list变量和相应你要取出的形参类型传递给它。比如va_arg(s,int)。然后在内部他调整s指向下一个形参。

函数执行创建栈帧,先将传递的参数压栈,C函数中的参数是从右向左依次入栈,地址从低到高,va_list 就是一个指针类型,va_strat将该指针定位到形参的第一个参数栈帧中的地址处,va_arg 根据类型将数据取出,并将指针向后移动。这是可变参数的底层。

相关推荐
阳光雨滴14 分钟前
使用wpf用户控件编程落石效果动画
c++·wpf
小贾要学习1 小时前
【数据结构】C++实现红黑树
数据结构·c++
ajassi20001 小时前
开源 C++ QT QML 开发(十七)进程--LocalSocket
c++·qt·开源
微露清风2 小时前
系统性学习C++-第五讲-内存管理
java·c++·学习
星夜钢琴手3 小时前
推荐的 Visual Studio 2026 Insider C++ 程序项目属性配置
c++·visual studio
kyle~4 小时前
Qt---setAttribute设置控件或窗口的内部属性
服务器·前端·c++·qt
hsjkdhs4 小时前
C++之多态
开发语言·jvm·c++
kyle~4 小时前
C++STL---静态数组array
开发语言·c++
kk”5 小时前
C++ List
开发语言·c++
HalvmånEver5 小时前
红黑树实现与原理剖析(上篇):核心规则与插入平衡逻辑
数据结构·c++·学习·算法·红黑树