C++中可变长参数的使用方法

一、可变长参数介绍

某些情况下为了完成一些功能,需要用到可变长参数的函数,例如我们最常用的 printf 和 scanf 函数:

它们首先都是一个字符串打头,后面再跟上不定数量的参数,为我们的输出形式提供了多样性。

对于像这样的不定长参数的函数来说,它的声明形式为:

... 表示不定长度的参数,和函数形参的默认值一样,... 也只能放在函数的最后,否则函数无法判断出哪些才是不定参数。

二、变参使用

变参函数内部是通过栈来实现的,对于每一个参数来说,在调用时它们都会从右到左依次被压入栈中,而栈的性质是先进后出,所以在使用时会从左到右提取。

C 语言中定义了一种类型 va_list 来提取这些参数,va_list 类型的定义如下:

提取需要用到的 API 函数为 va_startva_arg,其用法如下:

三、使用示例

运行结果:

发表评论