| 查看: 541 | 回复: 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。注意被调的函数在调用时是不知道可变参数的正确数目的,程序员必须自己在代码中指明结束条件。 |
» 猜你喜欢
中科院杭州医学所招收博士生一名(生物分析化学、药物递送)
已经有3人回复
A期刊撤稿
已经有5人回复
临港实验室与上科大联培博士招生1名
已经有8人回复
26申博自荐
已经有7人回复
想换工作。大多数高校都是 评职称时 认可5年内在原单位取得的成果吗?
已经有4人回复
带资进组求博导收留
已经有9人回复
求助大佬们,伤口沾上了乙腈
已经有6人回复
最近几年招的学生写论文不引自己组发的文章
已经有9人回复
» 本主题相关价值贴推荐,对您同样有帮助:
谭浩强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













回复此楼