什么是符合C和C ++的可变函数?

我很迷惑。 正如我之前提到的关于C中的重载的问题,我得到了一些答案。

每当我试图让别人理解这一点时,我就会对“可变函数”感到困惑。 请通过您的知识让我知道它!

简而言之,它们是接受任意数量参数的函数。

http://en.wikipedia.org/wiki/Variadic_function

可变函数是一个(单个)函数,每次都可以使用不同数量的参数调用。 一些可变函数,如printf,甚至允许您使用不同类型的参数。

重载的最大区别在于,使用可变参数函数,您可以使用一个函数来处理每个调用的不同集合或参数。 通过重载,您可以创建多个不同的函数,其中每个函数处理一组不同的参数。

所有可变函数都有一个共同点就是必须有一种方法来告诉函数现在传递的参数集。 两种常见的方式是:

  1. 第一个固定参数之一描述了可变部分。 例如,printf的格式字符串
  2. 最后一个参数有一个特殊值,表示“我们已完成”。 例如,execl函数要求参数列表以(char*)NULL参数终止。

如上所述,它过去常常接受任何数量的论点。

通常,当用户不知道要传递多少变量时,可能需要这种方法。

例如:对于要求1,您需要使用2个参数调用该方法。 对于要求2,您需要使用3个参数调用相同的方法。