| 查看: 548 | 回复: 3 | ||
| 【奖励】 本帖被评价2次,作者yalefield增加金币 1.5 个 | ||
[资源]
【分享】C语言,怎么玩可变参数 已有1人参与
|
||
|
printf()函数原型为: int printf( const char* format, ...); 这里面就有可变参数,三个点 ... printf("%d",i); printf("%s",s); printf("the number is %d ,string is:%s", i, s); 这三个点,能应付那么多情况.......羡慕嫉妒恨! 怎样写一个简单的可变参数的C函数 例子:该函数至少有一个整数参数,其后是占位符…,表示后面参数的个数不定. 在这个例子里,所有的输入参数必须都是整数,函数的功能是打印所有参数的值. 函数代码如下: //示例代码1:可变参数函数的使用 #include "stdio.h" #include "stdarg.h" void simple_va_fun(int start, ...) { va_list arg_ptr; int nArgValue =start; int nArgCout=0; //可变参数的数目 va_start(arg_ptr,start); //以固定参数的地址为起点确定变参的内存起始地址。 do { ++nArgCout; printf("the %d th arg: %d\n",nArgCout,nArgValue); //输出各参数的值 nArgValue = va_arg(arg_ptr,int); //得到下一个可变参数的值 } while(nArgValue != -1); return; } int main(int argc, char* argv[]) { simple_va_fun(100,-1); simple_va_fun(100,200,-1); return 0; } 使用可变参数应该有以下步骤: ⑴在程序中将用到以下这些宏: void va_start( va_list arg_ptr, prev_param ); type va_arg( va_list arg_ptr, type ); void va_end( va_list arg_ptr ); va在这里是variable-argument(可变参数)的意思. 这些宏定义在stdarg.h中,所以用到可变参数的程序应该包含这个头文件. ⑵函数里首先定义一个va_list型的变量,这里是arg_ptr,这个变量是指向参数地址的指针.因为得到参数的地址之后,再结合参数的类型,才能得到参数的值。 ⑶然后用va_start宏初始化⑵中定义的变量arg_ptr,这个宏的第二个参数是可变参数列表的前一个参数,也就是最后一个固定参数。 ⑷然后依次用va_arg宏使arg_ptr返回可变参数的地址,得到这个地址之后,结合参数的类型,就可以得到参数的值。然后进行输出。 ⑸设定结束条件,这里的条件就是判断参数值是否为-1。注意被调的函数在调用时是不知道可变参数的正确数目的,程序员必须自己在代码中指明结束条件。 |
» 猜你喜欢
最失望的一年
已经有8人回复
存款400万可以在学校里躺平吗
已经有27人回复
请教限项目规定
已经有4人回复
拟解决的关键科学问题还要不要写
已经有8人回复
推荐一本书
已经有16人回复
国自然申请面上模板最新2026版出了吗?
已经有20人回复
26申博
已经有3人回复
基金委咋了?2026年的指南还没有出来?
已经有10人回复
基金申报
已经有6人回复
疑惑?
已经有5人回复
» 本主题相关价值贴推荐,对您同样有帮助:
谭浩强C语言程序设计PDF版
已经有44人回复
交流一下c语言或者Fortran语言怎么应用于namd中
已经有11人回复
C语言写求一个变量开三次方的根!
已经有3人回复
C语言的程序复制到Word上出现乱码,怎么解决呀????
已经有4人回复
【求助】在国外,怎么样才能交到合适的可以一起玩的朋友啊
已经有7人回复
2楼2010-09-05 12:09:42
3楼2010-09-05 17:18:16
4楼2010-09-06 09:05:43













回复此楼