在C中使用varargs

Kev*_*ong 1 c variadic-functions

是一个例子varargs.

我有点困惑.

[x]问题1:如何获得第n 论点?

va_list ap;
va_arg (ap + (n-1), int); // **INCORRECT USAGE**
Run Code Online (Sandbox Code Playgroud)

这是对的吗?如果没有,如何获得第n 参数?

[x]问题2:什么时候会ap增加?

它说 ap将增加到下一个论点,但如果我使用va_arg(ap + (n-1), int), n>=2,会ap增加吗?

问题3:(BTW /可能是偏离主题的)什么是缩写?

有时,我们声明Cnt缩写为CountCounter.

什么ap缩写?

问题4:哪种类型ap

我知道它的va_list类型,但是什么va_list?结构?诠释?或者是其他东西?

谢谢.

thi*_*his 6

如果你想要第n个参数,你必须va_arg()使用正确的类型 n-1次调用.

您的示例1和2是错误的.apva_arg()自动更改.

va_list定义的类型是实现,但通常是char*.