首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请教:怎么将可变参数的函数的参数传递给另一个可变参数的函数

2012-03-13 
请问:如何将可变参数的函数的参数传递给另一个可变参数的函数举个简单的例子:C/C++ code/*模仿java中的Sys

请问:如何将可变参数的函数的参数传递给另一个可变参数的函数
举个简单的例子:

C/C++ code
/*模仿java中的System.out.println()*/void println(const char* format,...){        printf(format,...);    /*不过这样的不对的。应该如何写呢?望高手指点*/        printf("\n");}



[解决办法]
问题:可变长参数的传递 
  有时候,需要编写一个函数,将它的可变长参数直接传递给另外的函数,请问,这个要求能否实现? 

  答案与分析: 

  目前,你尚无办法直接做到这一点,但是我们可以迂回前进,首先,我们定义被调用函数的参数为va_list类型,同时在调用函数中将可变长参数列表转换为va_list,这样就可以进行变长参数的传递了。看如下所示: 


void subfunc (char *fmt, va_list argp)
{
...
arg = va_arg (fmt, argp); /* 从argp中逐一取出所要的参数 */
...


void mainfunc (char *fmt, ...)
{
va_list argp;
va_start (argp, fmt); /* 将可变长参数转换为va_list */
subfunc (fmt, argp); /* 将va_list传递给子函数 */
va_end (argp);
...
}

http://www.fortime.net/html/c/20061219/2229.html

热点排行