stdarg.h 可变参数谁能给我个详解,我英文不好,请勿转载网上的,我网上搜了一天不懂
请大侠教下我可变参数,我英文的语言基础不好,要详尽又易懂的,网上我搜了一天了,还是不太明白。 本帖最后由 苹果沃珂 于 2013-8-29 15:35 编辑这是我以前说的学习笔记,希望你能看懂#include <stdio.h>
#include <stdarg.h>
int max(int cnt, ...)
{
va_list v; // 声明va_list型变量v,用以保存可变参数列表
va_start(v,cnt); // 指明可变参数列表的开始:在参数cnt后面的
int i;
int maxvalue = va_arg(v, int); // 从参数表中取出一个int类型参数
for (i=1; i<cnt; i++)
{
int data = va_arg(v, int); // 从参数表中取出一个int类型参数
if (data>maxvalue)
maxvalue = data;
}
va_end(v); // 释放可变参数列表v
return maxvalue;
}
int main()
{
printf("max=%d \n",max(5,1,2,3,5,4));
printf("max=%d \n",max(3,11,22,18));
return 0;
}
网上有很多中文资料,你这样问大家没法回答的。你先自己写一个程序实验一下,然后把程序中的错误和不懂的地方发出来大家就能给你解释了。。。 问题描述太笼统了 JohnnyB0Y 发表于 2013-8-23 22:05 static/image/common/back.gif
问题描述太笼统了
这个头文件里就几个宏啊,想知道用法 拈花小仙 发表于 2013-8-23 22:13 static/image/common/back.gif
这个头文件里就几个宏啊,想知道用法
sorry,我是来赚鱼币的。其实我比你还不懂{:7_182:} JohnnyB0Y 发表于 2013-8-23 22:20 static/image/common/back.gif
sorry,我是来赚鱼币的。其实我比你还不懂
{:5_103:}楼主给你气吐血了 看看啥情况啊 具体想知道哪个,你贴出来,大家可以帮你解决解决!{:5_110:} 新手,学习中,呵呵 c++手册下载http://bbs.fishc.com/thread-38279-1-1.html以下内容来自c++中文手册
va_arg
语法:
#include <stdarg.h>type va_arg( va_list argptr, type );void va_end( va_list argptr );void va_start( va_list argptr, last_parm );
功能: 宏va_arg()用于给函数传递可变长度的参数列表。
首先,必须调用va_start() 传递有效的参数列表va_list和函数强制的第一个参数。第一个参数代表将要传递的参数的个数。
其次,调用va_arg()传递参数列表va_list 和将被返回的参数的类型。va_arg()的返回值是当前的参数。
再次,对所有的参数重复调用va_arg()
最后,调用va_end()传递va_list对完成后的清除是必须的。
For example:
#include<cstdarg>
#include<stdio.h>
int sum( int, ... );
int main( void )
{
int answer = sum( 4, 4, 3, 2, 1 );
printf( "The answer is %d\n", answer );
return 0;
}
int sum( int num, ... )
{
int answer = 0;
va_list argptr;
va_start( argptr, num );
for( ; num > 0; num-- )
{
answer += va_arg( argptr, int );
}
va_end( argptr );
returnanswer ;
}
这段代码显示10,他们是4+3+2+1。
:lol:,回了这么多贴,就lz给加分了,可惜现在等级不够,还加不了好友 fishso 发表于 2013-9-26 22:16 static/image/common/back.gif
c++手册下载http://bbs.fishc.com/thread-38279-1-1.html以下内容来自c++中文手册
va_arg
语法:
:victory:分析很到位,谢谢。
页:
[1]