Kev*_*rds 2 c c++ variadic-functions
对于以下代码:
void fun(char *msg, int n, int m, ...) {
va_list ptr;
va_start(ptr, m); // Question regarding this line
printf("%d ", va_arg(ptr, int));
}
Run Code Online (Sandbox Code Playgroud)
该函数调用如下:
fun("Hello", 3, 54, 1, 7);
Run Code Online (Sandbox Code Playgroud)
我的问题是关于上面评论的那一行.我尝试了该行的以下三个版本:
va_start(ptr, msg);
va_start(ptr, n);
va_start(ptr, m);
Run Code Online (Sandbox Code Playgroud)
在所有三种情况下,我得到"1"作为输出.根据我的阅读,第二个参数va_start
应该是函数参数列表中的最后一个参数fun()
,即va_start(ptr, m);
应该是正确的调用.那么为什么我在这三种情况下得到相同的输出.
[我在Ideone上运行程序,如果这有任何后果.]
归档时间: |
|
查看次数: |
700 次 |
最近记录: |