zoukankan      html  css  js  c++  java
  • C 可变长实参列表

    在可变实参头文件<stdarg.h>中的宏和定义,为创建一个可变长实参列表的函数提供了必须的功能

    va_list 该类型适合于保存宏va_start,va_arg和va_end所需的信息。为了访问到一个可变长实参列表中的实参,必须声明一个类型为va_list的对象

    va_start 在一个可变长实参列表中的实参被访问之前,先要调用这个宏。这个宏的功能室:初始化用va_list声明的对象,以便让宏va_arg和va_end来使用

    va_arg 这个宏展开成一个表示可变长实参列表中下一个实参的值和类型的表达式。每次对va_arg的调用都要修改用va_list声明的对象,以使这个对象指向列表中的下一个实参

    va_end 当一个函数的可变长实参列表是通过宏va_start来引用时,宏va_end可用于从这样的函数中正常返回

    eg:

    #include "stdio.h"
    #include "stdarg.h"
    
    double average(int i,...);
    
    int main(void)
    {
    
        printf("%f",average(2,32.3,22.3));
    
        getchar();
        return 0;
    }
    
    double average(int i,...)
    {
        int j;
        double total = 0;
        va_list ap;//存储宏(以符号形式表达的操作)va_start 和 va_end所需的信息
    
        va_start(ap,i);//初始化va_list对象 ,i是来判断可变长实参列表从哪里开始
    
        for(j=0;j<i;j++){
            total += va_arg(ap,double);//返回实参列表中的数据,第二个参数是期望返回的数据类型
        }
    
        va_end(ap);//使函数正常返回
    
        return total/i;
    }
  • 相关阅读:
    ShopEx customSchema 定制能够依据客户的需求对站点进行对应功能的加入改动或者删除
    Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
    NYOJ 46 最少乘法次数
    彻底理解position与anchorPoint
    链路层
    留不住的2015
    javascript笔记
    <html>
    高性能站点建设指南-前端性能优化(一)
    监听器设计模式
  • 原文地址:https://www.cnblogs.com/ShowJoy/p/3594310.html
Copyright © 2011-2022 走看看