C语言可变参数
C语言可变参数
SmartSage一、引入
在C语言中,我们可能会遇到一个函数的参数是不确定的情况,比如C语言内置的printf()
函数,它里面的参数可以是一个,也可以是两个,或者更多,那么我们自己定义的函数该如何实现这种可变参数的功能呢?这就要使用<stdarg.h>
中的va_list va_start va_arg va_end
来解决了。
二、使用方式
首先我们在定义函数的时候,用...
来代表我们的可变参数。
1 | int sum1(int n, ...); // 这三种方式都可以 |
然后我们在函数的内部定义一个va_list
的变量,使用va_start
函数来连接到这些可变参数
1 | va_list vaList; // 一个va_list 类型的变量 |
连接后,我们使用va_arg
来访问这些可变参数
1 | va_arg(vaList, int); // 第二个参数就是可变参数的类型,va_arg会逐个取出这种类型的参数。比如,int,不会取出其中的double类型的参数 |
使用后,要记得使用va_end()
来释放内存,防止内存泄漏
1 | va_end(vaList); // 释放 |
一个例子
1 |
|
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果