当前位置: 代码迷 >> 综合 >> va_start()、va_list()、va_arg()、va_end() (variable)
  详细解决方案

va_start()、va_list()、va_arg()、va_end() (variable)

热度:63   发布时间:2023-12-27 15:02:09.0

转:https://blog.csdn.net/garygeeker/article/details/24248573

源码:     
 

    typedef void* va_list;void    va_start (va_list ap, prev_param );     /* ANSI version */typedef va_arg(va_list ap, type );void    va_end(va_list ap );


1.va_list表示可变参数列表类型,实际上就是一个void *指针
2、va_start (va_list ap, arg);
    va_start用于获取函数参数列表中可变参数的首指针(获取函数可变参数列表)
      * 输出参数ap(类型为va_list): 用于保存函数参数列表中可变参数的首指针(即,可变参数列表)
      * 输入参数A: 为函数参数列表中最后一个固定参数(格式化字符串: const char *format)
3.va_arg
    va_arg用于获取当前ap所指的可变参数并将并将ap指针移向下一可变参数
      * 输入参数ap(类型为va_list): 可变参数列表,指向当前正要处理的可变参数
      * 输入参数T: 正要处理的可变参数的类型
      * 返回值: 当前可变参数的值
4.va_end
    他是输入的参数 ap 置为 NULL

  相关解决方案