可变参数的函数
Posted 一点一滴成长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可变参数的函数相关的知识,希望对你有一定的参考价值。
比如对于printf()函数,其参数就是可变的:int printf( const char* format, ...);
在函数内部我们使用va_start、va_arg、va_end这几个宏来获取实参,示例代码如下:
#include <cstdio> #include <iostream> #include <cstdarg> using namespace std; void TestFun(int i, ...) { va_list ap; va_start(ap, i); int j = va_arg(ap, int); double k = va_arg(ap, double); char*p = va_arg(ap, char*); va_end(ap); printf("%d, %d, %lf, %s\n", i, j, k, p); } int main() { TestFun(1, 2, 3.0, "abc"); return 0; }
va_start的第二个参数指定从哪个参数开始获取(不包括该参数)。
va_arg用来获得实参,第二个参数指定实参的类型,va_arg是顺序获得一个实参,调用一次只能获得一个参数。
va_end指明结束。
以上是关于可变参数的函数的主要内容,如果未能解决你的问题,请参考以下文章