va_list可变参数简单使用test

原创 2015年07月07日 14:49:12

3个宏

*   va_start
*   va_arg
*   va_end

这三个宏都在stdarg.h的头文件中被定义好了,只需添加该头文件即可使用,非常方便,下面就开始介绍如何使用这3个宏。

va_start

原型是void va_start( va_list arg_ptr, prev_param );
arg_ptr是自己定义的va_list变量,用于获取可变形参列表第一个参数地址, prev_param 就是形参中最左边的参数。

va_arg

原型是type va_arg( va_list arg_ptr, type ); 
返回一个type 类型值,也是当前arg_ptr指向的值,调用该宏的同时, arg_ptr向后移动一位,指向了下一个参数。

va_end

原型是void va_end( va_list arg_ptr ); 
用于清空va_list可变参数列表。

实际测试程序如下test.cpp


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

int demo(char* msg, ...)
{
    va_list argp;
    int argno =0;
    char * para= 0;
    va_start(argp, msg);
    while(1)
    {
        para = va_arg(argp, char *);
        if(strcmp(para, "")==0)
            break;
        printf("Parameter * %d is: %s \n", argno, para);
    }
    va_end(argp);
}
int main()
{
    demo("DEMO", "This", "is", "a", "demo!", "");
    return 0;
}

程序运行结构如下:
这里写图片描述

欢迎提供建议与意见,谢谢。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

可变参数va_list的理解和使用

在编写C语言代码的过程中经常会使用printf实现打印的格式化,该函数支持多样化的参数,同时还支持不定个数的参数,即可变参数。有关可变参数都知道是采用了va_list实现。通常是采用如下的形式: ...

vsprintf,va_list可变参数的使用

void Uart_Printf char fmt,... 分析 2010-04-01 22:18 void Uart_Printf(char *fmt,...) //...表...

iOS 使用可变参数va_list, 定义一个方法

- (void)inWithColumns:(NSString *)firstColumnName, ... { NSMutableArray *arrays = [NSMutableArra...
  • vinzry
  • vinzry
  • 2016年01月26日 16:38
  • 1691

c语言中可变参数va宏的使用

  • 2010年05月06日 15:29
  • 124KB
  • 下载

va_list 可变参数

什么是变长参数?所谓含有变长参数的函数是指该函数可以接受可变数目的形参。例如我们都非常熟悉的printf,scanf等等。2:变长参数如何实现?首先来看下面这样一个例子:#include#includ...

详解_C语言可变参数_va_list和_vsnprintf及printf实现

C语言的变长参数在平时做开发时很少会在自己设计的接口中用到,但我们最常用的接口printf就是使用的变长参数接口,在感受到printf强大的魅力的同时,是否想挖据一下到底printf是...
  • cjsycyl
  • cjsycyl
  • 2012年01月03日 12:39
  • 661

va_list 可变参数变量

VA_LIST 是在C语言中解决变参问题的一组宏他有这么几个成员:1) va_list型变量:#ifdef  _M_ALPHAtypedef struct {        char *a0;    ...

C可变参数 va_list 详解

VA_LIST 是在C语言中解决变参问题的一组宏 有这么几个成员: 1) va_list型变量: #ifdef  _M_ALPHA typedef struct {       ...

C语言中可变参数的处理va_list

今天在看UNPv2的时候看到C语言中可变参数的操作,有必要深究一下,恩。整理下。。。     va_list是在C语言中解决可变参数问题的一组宏,他有这么几个成员:     1) va_list型变量...
  • ddppqq
  • ddppqq
  • 2013年12月15日 10:57
  • 1573
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:va_list可变参数简单使用test
举报原因:
原因补充:

(最多只允许输入30个字)