c语言传递变长参数

时间:2018.09.30 发布人:鐏拌櫕

c语言传递变长参数

已解决问题

谷歌鐏拌櫕用户在2018.09.30提交了关于“有种你再撞一下c语言传递变长参数”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-14T21:31:42。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,千言万语,表达不了我的感激之情,我已铭记在心 !

希望以下的回答,能够帮助你。

第1个回答

用户名:匿名用户  

按照你现在给出的代码,

乡求背卷我指伟工八未print2(3,100否补乙,1,2,3);

输出的是123加上一位不确定值

因为va_start(vl,n);这一步理论上可以得到以a开头的va_list指针,但实际上由于编译器优化,组三谓析硫利乡道督它的效果和va_start(vl,a);是相同的

这一点,你可以打印出指针地址来确定一下

从你的代码推测,你是想让print2打印出后四个参数,包括a在内

即100123

如果是这样可以用另一种方式做到

print2中,不要调用va_start

而是直接vl=&a;

如下

voidprint2(intn,inta,队争测房海晶把)

{

va_listv块钢括攻培l;

//va_start(vl口错甚,n);//使用倒数第二个有名变量

vl=&a;//编译器想优化不让。直接强势插入

vprint(n+1,vl);

va_end参拿冲(vl);

}

可以克质春愿强试一下是否是你需要的效果。如果不是再追问