怎样取得函数的可变参数 我定义了一个可变参数的函数void func(T_Progs tProgs,...){}T_Progs是一个结构怎样取得传进来的参数呢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 tProgs结构里的参数?直接用就可以,tProgs.XXX 传进来的是多个T_Progs,我是指要取到每一个T_Progs,不是指结构中的变量 #include <stdio.h>#include <stdarg.h>struct T_Progs{ int i;};int Add( T_Progs tProgs1, ... ){ va_list pArgs; va_start( pArgs, tProgs1 ); T_Progs tProgs = tProgs1; int sum = 0; while( tProgs.i != -1 ) { sum += tProgs.i; tProgs = va_arg( pArgs, T_Progs ); } va_end( pArgs ); return sum;}int main(int argc, char* argv[]){ T_Progs p1, p2, p3, p4; p1.i = 1; p2.i = 2; p3.i = 3; p4.i = -1; sum = Add( p1, p2, p3, p4 ); printf( "Add( 1, 2, 3 ) = %d\n", sum ); return 0;}参数最好用指针int Add( T_Progs* ptProgs1, ... );int Add( T_Progs* ptProgs1, ... ){ va_list pArgs; va_start( pArgs, ptProgs1 ); T_Progs* ptProgs = ptProgs1; int sum = 0; while( ptProgs ) { sum += ptProgs->i; ptProgs = va_arg( pArgs, T_Progs* ); } va_end( pArgs ); return sum;}int main(int argc, char* argv[]){ T_Progs p1, p2, p3; p1.i = 1; p2.i = 2; p3.i = 3; sum = Add( &p1, &p2, &p3, NULL ); printf( "Add( 1, 2, 3 ) = %d\n", sum ); return 0;} #include <stdio.h>#include <stdarg.h>struct T_Progs{ int x; int y;}; void func(T_Progs *tProgs,...){ int total = 0; va_list ap; T_Progs *p; va_start(ap, tProgs); p = tProgs; printf("x[%d]=%d\n",total,p->x); printf("y[%d]=%d\n",total,p->y); total++; while (p = (va_arg(ap,T_Progs *))) { printf("x[%d]=%d\n",total,p->x); printf("y[%d]=%d\n",total,p->y); total ++; } va_end(ap); printf("参数个数:%d\n",total); }void main(void) { T_Progs test1,test2; test1.x = 1;test2.x = 3; test1.y = 2;test2.y = 4; func(&test1,&test2,NULL);} 还有多少兄弟在玩CS1.6啊? 用MFC发送ARP包 word自动化的问题 急,关于下载的问题 ReadFile文件在kernal是用什么编的c吗????? 关于WINVER的问题 大家看看,我的mfc应用程序,这句话错哪了 一个关于学习步骤的问题! 用过DEV-C++的朋友请进. 菜鸟的疑惑--------高手的争论! Visual Studio 2003中的帮助,好像每次都要通过网络在线同步,怎样取消? 请问Win32环境下编程问题
直接用就可以,tProgs.XXX
#include <stdarg.h>struct T_Progs
{
int i;
};int Add( T_Progs tProgs1, ... )
{
va_list pArgs;
va_start( pArgs, tProgs1 ); T_Progs tProgs = tProgs1;
int sum = 0;
while( tProgs.i != -1 )
{
sum += tProgs.i;
tProgs = va_arg( pArgs, T_Progs );
} va_end( pArgs );
return sum;
}int main(int argc, char* argv[])
{
T_Progs p1, p2, p3, p4;
p1.i = 1;
p2.i = 2;
p3.i = 3;
p4.i = -1;
sum = Add( p1, p2, p3, p4 );
printf( "Add( 1, 2, 3 ) = %d\n", sum );
return 0;
}参数最好用指针int Add( T_Progs* ptProgs1, ... );int Add( T_Progs* ptProgs1, ... )
{
va_list pArgs;
va_start( pArgs, ptProgs1 ); T_Progs* ptProgs = ptProgs1;
int sum = 0;
while( ptProgs )
{
sum += ptProgs->i;
ptProgs = va_arg( pArgs, T_Progs* );
} va_end( pArgs );
return sum;
}int main(int argc, char* argv[])
{
T_Progs p1, p2, p3;
p1.i = 1;
p2.i = 2;
p3.i = 3;
sum = Add( &p1, &p2, &p3, NULL );
printf( "Add( 1, 2, 3 ) = %d\n", sum );
return 0;
}
#include <stdarg.h>
struct T_Progs{
int x;
int y;
};
void func(T_Progs *tProgs,...)
{
int total = 0;
va_list ap;
T_Progs *p;
va_start(ap, tProgs);
p = tProgs;
printf("x[%d]=%d\n",total,p->x);
printf("y[%d]=%d\n",total,p->y);
total++;
while (p = (va_arg(ap,T_Progs *)))
{
printf("x[%d]=%d\n",total,p->x);
printf("y[%d]=%d\n",total,p->y);
total ++;
}
va_end(ap);
printf("参数个数:%d\n",total);
}
void main(void)
{
T_Progs test1,test2;
test1.x = 1;test2.x = 3;
test1.y = 2;test2.y = 4;
func(&test1,&test2,NULL);
}