关于C/C++可变参数

C/C++可变参数例子

 

#include <stdio.h>
#include <stdarg.h>

int proc(char *fmt,...)
{
    char buffer[50];
    va_list ptr;
    int num;
    va_start(ptr, fmt);
    num = vsprintf(buffer, fmt, ptr);
    va_end(ptr);
    printf("%s/n", buffer);
    return(num);
};

int main()
{
    int   i = 1;
    float f = 66.0;
    char str[5] = "test";
    proc("%s   %d   %f",str, i, f);
   
    return 0;
}

程序结果: test  1  66.000000 

 

函数名: vsprintf

功 能: 格式化输出到串中
用 法: int vsprintf(char *string, char *format, va_list param);

 

 

VA_LIST的用法 ( VA_LIST 是在C语言中解决变参问题的一组宏):   

(1)首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针   

(2)然后用VA_START宏初始化变量刚定义的VA_LIST变量(如在运行VA_START(ap,v)后,ap指向第一个可变参数在堆栈地址)   

(3)然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型。   

(4)最后用VA_END宏结束可变参数的获取。然后你就可以在函数里使用第二个参数了。如果函数有多个可变参数的,依次调用VA_ARG获取各个参数。

你可能感兴趣的:(关于C/C++可变参数)