C语言不定参数,C++不定参数的函数
因为C语言没有函数重载,所以解决函数参数个数不定的问题就变得比较麻烦。利用调用函数时使用的堆栈,解决了C语言中实现不定参数函数的问题。原理是通过堆栈读取可选参数的值,直到读取设置的结束标志。以下程序的可选参数的结束标志被设置为小于0的可选参数。
包括一个stdarg.h头文件,该文件包含以下宏定义:
# define _ int sizeof(n)((sizeof(n)sizeof(int)-1)~(sizeof(int)-1))
# define va _ start (ap,v)(AP=(va _ list)v _ int sizeof(v))//第一个可选参数的地址
# defineva _ arg (ap,t)(*(t *)((ap=_ int sizeof(t))-_ int sizeof(t)))//返回ap地址的值,AP指向下一个可选参数的地址。
# define va _ end(AP)(AP=(va _ list)0)//将指针设置为无效
#include stdafx.h
#include stdarg.h
无效测试(int i,int j,)
int数据;
va_list参数;//定义va_list变量
printf(%d %d ,I,j);
va_start(args,j);//使args指向j之后的第一个可选参数。
While ((data=va _ arg (args,int))=0)//va _ arg函数返回参数args指针对应的变量值,args指向下一个可选参数//number。当参数大于或等于0时,读取数据并打印读取的数据。当读取//到小于0的参数时,结束循环。
printf( %d ,数据);
printf( \ n );
va _ end(args);//使参数指针无效
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。