快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

和记娱棒h88285:C语言中可变参数用法



在C说话中对照常用的可变参数便是printf();函数原型如下:

int printf(const char * format,……);

写一个简单的可变参数:  #include

void va_fun(int i,...);

int和记娱棒h88285 main(void)

{

va_fun(100);

va_fun(2和记娱棒h8828500,100);和记娱棒h88285

va_fun(100,200,300);

}

void va_fun(int i,...)

{

va_list arg_ptr;

int j = 0;

va_start(arg_ptr,i);

j = va_arg(arg_ptr,int);

va_end(arg_ptr);

printf("%d %dn",i,j);

}

这样就实现了一个简单的可变参数。着实可变参数是使用宏来实现的,宏在参数的客栈中查找参数的位置,然后返回。

定义如下:typedef char *和记娱棒h88285 va_list;

#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )

#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )

#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) -和记娱棒h88285 _INTSIZEOF(t)) )

#define va_end(ap) ( ap = (va_list)0 )

着实便是谋略参数客栈中的内存地址。

建议少用可变参数,在c++顶用多态实现就可以。

printf中根据format中的参数的个数确定后面参数的个数。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: