va_start和va_end定义
1.va_start和va_end是两个宏
2.在c语言中,当我们无法列出传递函数的所有形参类型和数目时,可以用省略号指定参数表
相关知识
1.va_list ap;//是定义一个字符指针ap
2.va_start(ap,msg);//意思是让ap指向第一个形参列表中的第一个形参
3.vprintf(msg,ap);//C 库函数 int vprintf(const char *format, va_list arg) 使用参数列表发送格式化输出到标准输出 stdout
4.va_end(ap); //释放ap指针
代码示例
#include <iostream>
using namespace std;
#include <stdarg.h>
#include <string.h>
string print(char* a,...)
{
va_list ap; //定义一个指针
va_start(ap,a); //ap指向形参列表的第一个形参
vprintf(a,ap); //获取参数(vprintf使用参数列表发送格式化输出到标准输出 stdout);
va_end(ap); //释放指针ap
static char ptr[128] = {0};
memset(ptr, 0, sizeof(ptr));
fgets(ptr, sizeof(ptr), stdin); //从标准输入获取参数到ptr。
if(strlen(ptr) > 0) {
if('\n' == ptr[strlen(ptr) - 1]) {
ptr[strlen(ptr) - 1] = '\0';
}
}
return ptr;
}
int main()
{
string sptr = print("\nPlease input : ");
cout << sptr <<endl;
return 0;
}
输出结果