c语言可变参数:C语言中可变参数用法



在C语言中比较常用可变参数就是prf;原型如下:

prf(const char * format,...);

个简单可变参数:

# <stdarg.h>

void va_fun( i,...);

(void)
{
va_fun(100);
va_fun(200,100);
va_fun(100,200,300);
}

void va_fun( i,...)
{
va_list arg_ptr;
j = 0;
va_start(arg_ptr,i);
j = va_arg(arg_ptr,);
va_end(arg_ptr);
prf("%d %d\n",i,j);
}

这样就实现了个简单可变参数其实可变参数是利用宏来实现宏在参数堆栈中查找参数位置然后返回

定义如下:

typedef char * va_list;
# _INTSIZEOF(n) (((n)+()-1)&~(() - 1) )
# va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
# va_arg(ap,t) ( *(t *)((ap _INTSIZEOF(t)) - _INTSIZEOF(t)) )
# va_end(ap) ( ap = (va_list)0 )

其实就是计算参数堆栈中内存地址

建议少用可变参数在c中用多态实现就可以

prf中根据format中参数个数确定后面参数个数
Tags:  可变参数 c语言中的用法 c语言中if用法 c语言可变参数

延伸阅读

最新评论

发表评论