zoukankan      html  css  js  c++  java
  • learning va_start va_end va_arg func

    C 库宏 void va_start(va_list ap, last_arg) 初始化 ap 变量,

    它与 va_arg 和 va_end 宏是一起使用的。

    last_arg 是最后一个传递给函数的已知的固定参数,即省略号之前的参数。

    这个宏必须在使用 va_arg 和 va_end 之前被调用。

    example 1:

    #include <stdio.h>
    #include <stdarg.h>
    
    int sum(int num_args, ...){
            int val = 0;
            va_list ap;
            int i;
            va_start(ap, num_args);
            for(i = 0; i < num_args; i++){
                    val += va_arg(ap, int);
            }
            va_end(ap);
            return val;
    
    }
    
    int main(void){
    
            printf("sum of 10, 20, 30
    ");
            printf("result: %d
    ", sum(3, 10,20,30));
            return 0;
    }
    

    result:

    sum of 10, 20, 30
    result: 60

    example2:

    #include <stdio.h>
    #include <stdlib.h>
    #include <stdarg.h>
    #include <string.h>
    
    void tLog(char *sInfo, ...){
    
            char *str = NULL;
            char *str1 = NULL;
            char *str2 = NULL;
            va_list sArgv;
            va_start(sArgv, sInfo);
            str =  va_arg(sArgv, char *);
            str1 =  va_arg(sArgv, char *);
            str2 =  va_arg(sArgv, char *);
            va_end(sArgv);
            printf("output:[%s,%s %s %s]
    ",sInfo, str, str1, str2);
    
    }
    
    int main(int argc, char *argv[]){
    
            char str[10] = {0};
            strcpy(str, "brother");
            tLog(str, argv[1], argv[2], argv[3]);
            return 0;
    

    result:

    # ./a.out tu nan dong
    output:[brother,tu nan dong]
    

      

      

  • 相关阅读:
    一LWIP学习笔记之数据包管理
    智能家居的发展趋势
    break和continue的区别
    TCP与UDP区别总结
    C语言变量和函数命名规范
    常用电子元件
    php 1018
    php 1016
    mysql 应用查询 三个表(学生表,课程表,学生课程分数表) student, course, score表
    mysql 聚合函数
  • 原文地址:https://www.cnblogs.com/lianghong881018/p/12191730.html
Copyright © 2011-2022 走看看