c中的省略函数必须先获得一个int参数

时间:2018-04-25 22:51:45

标签: c printf ellipse

根据C - Variable Arguments中的解释所写的内容:

  

定义一个函数,其最后一个参数为省略号,而省略号之前的那个函数总是一个int ,它将代表参数的数量。

...之前将int发送到椭圆函数真的是必须的吗?

我看到了printf()函数的原型,在...之前函数得到const char *并且int之前没有任何...

1 个答案:

答案 0 :(得分:3)

不,传递int不是一项要求,正如printf()所证明的那样。您在本教程中看到的内容特定于本教程提供的func()average()示例(尽管func()示例与int说明无法正确匹配,但{ {1}}例子确实如此)。

只有调用者知道它传入了多少参数值(以及它们的类型),因此您需要设计可变参数函数,使调用者必须指定实际存在多少参数值传入(以及可选的类型)。有两种方法可以做到这一点:

  • 传入必需的前导参数。这可以是average(),指定确切的参数计数。或者它可以是函数解析以确定参数的字符串(这是int所做的)。

  • 传入所需的哨兵值作为最后一个参数值。然后该函数只使用它找到的所有参数,直到它到达那个哨兵。