• 可变参数理解


    如printf("%s, %d,... ", char, int, ...);

    传入个数可变的参数,就能打印相应个数的参数
    C语言中,使用va_list来解决变参的问题
    VA_LIST是用来解决变参问题的一组宏,头文件在#include <stdarg.h>,用于获取不确定个数的参数
    va_list:是一个字符指针,在代码中可以理解为指向当前参数的一个指针
     
    //对va_list变量进行初始化,将ap指针指向参数列表中的第一个参数
    void va_start(va_list ap, param);
     
    //获取参数,类型为type,返回值类型也为type类型
    type va_arg(va_list ap, type);
     
    //将ap(通常是字符串)按format格式写入字符串string中
    int vsprintf(char *string, char *param, va_list ap);
     
    //回收ap指针
    void va_end(va_list ap);
     
    所以解决变参问题就变成了如下四步
    1)首先在函数里定义va_list类型的变量ap,即指向参数的指针;
    2)然后用va_start函数初始化刚才定义的ap指针;
    3)然后用va_arg函数返回可变的参数,即va_arg(va_list ap, type);
    4)最后用va_end函数回收va_list的ap指针;
     
    Demo实例//获取参数列表中的最大值
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdarg.h>
    int getMAX(int ss, ...)
    {
        int ret = 0, tmp;
        va_list ap;
        va_start(ap, ss);
        for (int i = 0; i < ss; i++)
        {
            tmp = va_arg(ap, int);
            if (ret < tmp)
            ret = tmp;
        }
        va_end(ap);
        return ret;
    }
    
    int main(int argc, const char * argv[]) 
    {
        int num = 5;
        int data;
        data = getMAX(num, 2, 5, 6,3 ,8);
        printf("%d
    ", data);
        return 0;
    }            
     
  • 相关阅读:
    python斐波那契数列
    Python 核心编程(第二版)第八章 练习完整答案[转载]
    MYSQL自动备份!
    PHP筛选法求质数。
    Python函数式编程指南(四):生成器(转载)
    试除法求质数的最快方法!
    Python函数式编程指南:目录和参考(转载)
    PHP冒泡算法
    maven默认web项目中的web.xml版本问题
    IDEA自动补全返回值类型的快捷键
  • 原文地址:https://www.cnblogs.com/Jummyer/p/9950640.html
Copyright © 2020-2023  润新知