gpt4 book ai didi

c - C 中的可变参数函数 f() 与 f(...)

转载 作者:行者123 更新时间:2023-12-02 09:12:19 25 4
gpt4 key购买 nike

以下两个可变参数函数定义有什么区别?

int f()
{
/* function definition */
}

int f(...)
{
/* function definition */
}

f()实际上被定义为一个可变参数函数。我还假设 <stdarg.h>可以包含并使用。

最佳答案

函数声明中的空参数列表表示该函数采用未指定数量的参数(与变量数量的参数不同)。函数定义中的空参数列表(例如f的第一个定义中)表明该函数没有参数。这是一种过时的样式,不应使用 - 要指示函数不带参数,请使用 void 作为标识符列表。

从 C89 开始,可变函数声明符必须至少一个固定参数,后跟 ...。因此 f 的第二个定义也不起作用。

int f( void ) // f takes no arguments
{
// do something
}

int f( T fixed, ... ) // one fixed parameter of some type, additional parameters as needed
{
// do something
}

printf 是标准库中可变参数函数的一个很好的例子 - 它的原型(prototype)是

int printf( const char *fmt, ... );

关于c - C 中的可变参数函数 f() 与 f(...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50823215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com