大家好,又见面了,我是全栈君。
#include <iostream>
#include <stdarg.h>
using namespace std;
int ArgFunc(const char * str, ...)
{
va_list ap; // 定义參数列表变量
va_start(ap, str); // 确定參数位置。表明从 str 開始获取參数
// 開始获取參数 var_arg(ap, 数据类型) 返回获取的值
cout<<va_arg(ap, int)<<endl;
cout<<va_arg(ap, int)<<endl;
// 由于仅仅传入两个參数。所以这里获取到的数值为 零
cout<<va_arg(ap, int)<<endl;
cout<<va_arg(ap, int)<<endl;
va_end(ap); // 将參数列表 ap 清零
return 0;
}
int main()
{
ArgFunc("func", 10, 20); // 数据从右往左 压入 栈中 。栈顶元素为 "func"
return 0;
}
/*****************************************************
*
* 获取可变參数
*
* 1. 包括头文件:#include <stdarg.h>
* 2. 定义 參数列表变量:va_list ap;
* 3. 确定从哪里開始获取数据 va_start(ap, str); 表示在str參数之后開始获取參数。
* 4. 開始获取參数并指明类型,如:va_arg(ap, int); 获取第一个參数。并指明类型为 int
* 5. 清空列表 va_end(ap);
*
******************************************************/
执行结果:
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116509.html原文链接:https://javaforall.cn