printf的签名是什么?

9

最近我在一次面试中被问到printf的签名是什么。 我真的无法给出正确的答案。有人能够解释一下吗?


2
如果你在面试中遇到了困难,特别是关于事实的问题,请问面试官!如果你礼貌地提问,而他们不是个恶棍,我想他们不会拒绝你。 - Ken
3个回答

26
int printf ( const char * format, ... );

他们可能是想问你是否熟悉可选参数语法“...”。这允许您传递一个不确定的变量列表,这些变量将填充格式字符串。

例如,同一方法可以用于打印类似以下内容的东西:

printf("This is a string: %s", myString);
printf("This is a string: %s and an int: %d", myString, myInt);

1
说实话,直到现在我才知道它返回一个整数。 - Andy White
1
我希望他们是在问可变语法。如果他们想知道返回类型,那个问题就太糟糕了。你不想在那里工作。 - Steve Rowe
1
那是C89版本:在C99中,你也需要一个restrict:int printf(const char * restrict format, ...); - Jonathan Leffler
当询问scanf时,我怀疑返回值问题变得很重要。 - Johannes Schaub - litb
1
@Andy:请参见例如http://www.cellperformance.com/mike_acton/2006/05/demystifying_the_restrict_keyw.html(在谷歌上搜索“gcc restrict”时的第一个结果)。 - Christoph
显示剩余10条评论

8

printf是一个具有以下签名的可变参数函数:

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

这意味着它有一个必需的字符串参数,后跟0个或多个参数(可以是各种类型)。最后,它返回一个表示结果中有多少个字符的整数。

可选参数的数量和类型由格式字符串的内容确定。


3

方法签名,是指一种用于描述函数或方法的参数类型和返回值类型的标记。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接