C语言可变参数定义语法及步骤详解

可变参数

C语言的可变参数是什么?顾名思义,就是函数的参数的个数是可以改变的,自定义的,而且理论上是可以无限多个的(但一般不会这样去使用)。C语言的可变参数定义的语法如下:

type functionName(int count, ...){
   va_list listName;
   va_start( listName, count );
   for + va_arg //非固定为for语句
   va_end(listName);
}

可变参数语法解析及步骤

将参数的参数声明为可变参数的函数定义与C语言中其它的函数的定义类似,只是参数的声明有所不同,介绍如下:

  • int count:count固定为int整型的参数,表示可变参数的个数;
  • “...”:三个点的省略号,在函数调用的时候,可以将其替换为实际要传递的参数,多个参数之间使用英文逗号隔开;
  • va_list:定义在stdarg.h头文件中的类型,用于声明一个可变参数列表的变量;
  • va_start:使用va_start预定义的宏可以用来初始化之前声明的va_list类型的变量,即获取一个参数列表,个数为count,值为之前调用函数时传递的那些替换“...”的参数;
  • for+va_arg:for循环和va_arg搭配使用,访问参数列表varList中的参数值,不是一定要使用for循环,只要可以用来访问varList中的参数即可(个人观点,仅供参考);
  • va_end:也是stdarg.h中的预定义宏,用于清理参数列表varList中保留的内存;

重点提示:va_list、va_start、va_arg、va_end等是在stdarg.h头文件中定义的,使用之前,需要先将该文件包含include进C文件中。

可变参数实例代码

如下实例中,将定义一个参数为可变参数的函数,用于计算参数的和:

#include "stdio.h"
#include "stdarg.h"


int addArgs(int count, ...){
    va_list argList;
    va_start(argList, count);
    int sum = 0;
    for(int i=0; i<count; i++){
        sum += va_arg(argList, int);
    }
    va_end(argList);

    return sum;
}



int main() {

    int sum = addArgs(5,1,2,3,4,5);
    printf("%d\n",sum);

    return 0;

}

免责声明:内容仅供参考,不保证正确性。


全栈后端 / C语言教程 :


















Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.