zoukankan      html  css  js  c++  java
  • C语言——stdarg.h

    C语言不支持函数重载,但支持可变参数。在 stdarg.h 中提供了3个方法和1个结构。

    struct va_list,参数列表

    void va_start(va_list,int); 访问参数前的准备工作

    void va_arg(va_list,void);访问参数,注意参数中的void指数据类型,实际调用时应该是int,float,char等

    void va_end(va_end);访问结束后清理工作

    使用过程

    #include <stdio.h>
    #include <stdarg.h>
    
    int main(){
        int sum(int c,...);
        
        int c = sum(6,1,2,3,4,5,5);
        
        printf("sum = %d
    ",c);
        return 0;
    }
    
    int sum(int c,...){
        va_list var_list;
        int count = 0;
        va_start(var_list,c);
        for(;c>0;c--){
            count+=va_arg(var_list,int);
        }
        va_end(var_list);
        return count;
    }

    注意:

    声明可变参数方法时,第一个参数应为int,用来表明参数数量,是不能省略的

    个人感觉:

    1.可变参数可以理解为传递给方法一个指针,参数数组的指针,因为数组指针作为参数,接受参数的方法是不知道数组大小的,所以还要传递一个参数数量,这也说明了为什么可变参数的第一个int参数不可省略。

    2.va_start();应该是初始化了一下参数指针,因为没有这个过程参数访问就会失败。

    3.va_arg();这个很明显了,就是指针解引用,并向后移动。

    4.va_end();这个也很好理解,肯定是释放内存了,并且销毁指针。

  • 相关阅读:
    坑人的微信新版支付(V3.3.6)
    Chrome 实现前端页面自动刷新
    css基础
    基础HTML
    HTML5的世界
    Web前端开发的前景与用处
    JavaScript由浅入深(一)——类型、值和变量
    JS常用的方法总结
    js金钱分割,正则
    用 HTML5+ payment方法支付宝支付遇到的坑
  • 原文地址:https://www.cnblogs.com/huhudollar/p/5113039.html
Copyright © 2011-2022 走看看