C语言 函数的可变参数

2020-04-23  本文已影响0人  禁卫君

在C语言中想在函数中输入不定量的参数

可变参数列表使用过宏来使实现的,这些宏定于stdarg.h头文件。这个头文件声明了一个类型va_list和三个宏——va_start, va_arg, va_end。

各个宏的具体使用方法

  1. va_list :声明一个类型为va_list的变量,用来访问参数列表的未确定部分;
  2. va_start : va_start用来初始化va_list,第一个参数为va_list变量,第二个参数是省略号前最后一个有名字的参数。
  3. va_arg :用于访问参数。 第一个参数为va_list, 第二个参数为参数列表中下一个参数的类型。
  4. va_end : 在访问完最后一个可变参数之后,调用va_end,接受一个参数va_list;

例子(来自《C与指针》一书的第七章编程练习的第四题)

Q:编写一个名叫max_list的函数,它用于检查任意数目的整型参数并返回它们中的最大值。参数列表必须以一个负值结尾,提示列表的结束。

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


int max_list(int num, ...)
/*
* num: 指明参数列表的长度(包包含最后一项)
*/
{
  // 声明一个类型为va_list的变量
  va_list valist;
 // 初始化valist变量
  va_start(valist, num);
  
  int max = -255;
  int i;
  for(i = 0; i < num; i++)
  {
    int tem = va_arg(valist, int);
    max = tem > max ? tem : max;  
  }
  va_end(valist);
   return max;
}

视频教程

视频教程

上一篇 下一篇

猜你喜欢

热点阅读