zoukankan      html  css  js  c++  java
  • C中可变参数列表

    我只是想记录一下C中可变参数列表的用法,供以后记不清了且手头上没有参考手册使用,为了方便起见我用 C++ 写了,别怪我呀。

    //
    // 可变参数列表示例
    //
     

    #include
    <cstdlib>
    #include
    <cstdarg>
    #include
    <climits>
    #include
    <iostream>


    int max(int num, ...)
    {
    int m = INT_MIN;

    //
    // 参数指针 ap (argument pointer).
    // 用于对可变参数列表进行遍历.
    //
    va_list ap;

    //
    // 初始化参数指针 ap.
    // 把 ap 设置为指向传递给函数的第一个可变参数.
    // va_start 必须在任何 va_arg 或 va_end 调用之前被调用.
    //
    va_start(ap, num);

    for (int i = 0, t; i < num; i++)
    {
    //
    // 返回参数列表中下一个参数值.
    // 并把 ap 指针推进为下一个参数(如果有).
    // 在调用 va_start 之后第一次调用 va_arg 将返回第一个可变参数值.
    //
    t = va_arg(ap, int);

    if (t > m) {
    m
    = t;
    }
    }

    //
    // 对 ap 和 va_list 执行必要的清理工作.
    // va_end 在所有的参数都通过 va_arg 被读取之后再调用.
    //
    va_end(ap);

    return m;
    }


    int main(void)
    {
    std::cout
    << max(5, 5, 6, 3, 8, 5) << std::endl;

    return EXIT_SUCCESS;
    }
  • 相关阅读:
    HDU 2196 Computer
    HDU 1520 Anniversary party
    POJ 1217 FOUR QUARTERS
    POJ 2184 Cow Exhibition
    HDU 2639 Bone Collector II
    POJ 3181 Dollar Dayz
    POJ 1787 Charlie's Change
    POJ 2063 Investment
    HDU 1114 Piggy-Bank
    Lca hdu 2874 Connections between cities
  • 原文地址:https://www.cnblogs.com/wxxweb/p/2055971.html
Copyright © 2011-2022 走看看