别的不解释,使用变长参数过程中的问题看程序运行结果就明白了!
#include<stdio.h>
#include<stdarg.h>//变参函数va_start,va_arg,va_end
void t(int &a, int b,...){
int i,d;
va_list ap;
va_start(ap,b);
for(i=0;i<b;i++){
d=va_arg(ap,int);
printf("%d ",d);
}
printf("\n");
}
void t2(int a,int &b,...){
int i,d;
va_list ap;
va_start(ap,b);
for(i=0;i<b;i++){
d=va_arg(ap,int);
printf("%d ",d);
}
printf("\n");
}
int main(void){
int a=2,b=2;
t(a,b,4,5);
t2(a,b,4,5);
getchar();
return 0;
}
#include<stdarg.h>//变参函数va_start,va_arg,va_end
void t(int &a, int b,...){
int i,d;
va_list ap;
va_start(ap,b);
for(i=0;i<b;i++){
d=va_arg(ap,int);
printf("%d ",d);
}
printf("\n");
}
void t2(int a,int &b,...){
int i,d;
va_list ap;
va_start(ap,b);
for(i=0;i<b;i++){
d=va_arg(ap,int);
printf("%d ",d);
}
printf("\n");
}
int main(void){
int a=2,b=2;
t(a,b,4,5);
t2(a,b,4,5);
getchar();
return 0;
}
运行之后问题就变得非常显而易见了,如果va_start宏定义的参数中的变量为权引用的地址的话就会出错,所以这点需要注意,如果实在只有一个实际参数就老实用指针传递吧!
原因就不解释了,很简单!
谢谢你的分享。伟大的职位…
每天坚持更新博客还是很难得的,对于一些好的博文,
我一般都是收藏的,在这里就先谢谢这些博主的无私分享了。
分享的好专业的,值得学习
是吗!
来关注一下,好棒的,支持了
我自己都好久没有关注了!
最近空间快到期,也想换个空间,请问博主这个wordpress的博客主机空间,包年多少,在国内速度如何、
别人的VPS,貌似蛮贵的!我没出钱