个人技术分享

目录

前言

一、使用方法

二、示例代码 


前言

        在开发的过程中,有时候会遇到函数中参数不固定的情况,这篇博客主要记录下C语言中的可变参数。

一、使用方法

        在C语言中,可变参数是指函数的参数数量是可变的,可以根据函数的调用情况传入不同数量的参数。可变参数的处理通常使用了C语言提供的stdarg.h头文件中的宏和函数。

下面是在C语言中处理可变参数的一般步骤:

  1. 在函数声明中使用省略号...表示函数具有可变参数。
  2. 在函数定义中使用va_list类型的变量声明一个参数列表。
  3. 使用va_start宏初始化参数列表。
  4. 使用va_arg宏依次访问参数列表中的参数。
  5. 使用va_end宏结束参数列表的访问。

        下面写了一个Demo,说明了如何在C语言中使用可变参数。

二、示例代码

#include <stdio.h>
#include <stdarg.h>

// 定义一个可变参数函数,计算可变参数的和
int sum(int num, ...) {
    va_list args;
    int total = 0;
    
    // 初始化参数列表
    va_start(args, num);

    // 访问参数列表中的参数
    for (int i = 0; i < num; i++) {
        total += va_arg(args, int);
    }

    // 结束参数列表的访问
    va_end(args);

    return total;
}

int main(int argc, const char *argv[]) {
    printf("和: %d\n", sum(3, 10, 20, 30));    // 输出:Sum: 60
    printf("和: %d\n", sum(5, 1, 2, 3, 4, 5)); // 输出:Sum: 15
    return 0;
}

 

        在上面的示例中,sum函数接受一个整数参数num,表示可变参数的数量,然后使用va_list类型的变量args声明一个参数列表。在函数体内部,使用va_start宏初始化参数列表,然后使用va_arg宏逐个访问参数列表中的参数,并计算它们的和。最后,使用va_end宏结束参数列表的访问。