va_list简介

 

这个功能主要在调用不清楚参数数目的方法情况下使用。

 

要使用这个va_list方法,首先定义一个va_list类型变量,然后使用va_start(), va_arg(), va_end()三个宏定义方法。

 

  • va_start()

这个方法初始化ap子串,为了下面两个方法进行使用。因此,必须在另两个方法之前被调用。这里的第二个参数last

表示在变化子串之前的最后一个参数。比如: method( int a,....)那么a就是last,va_list是指a后面的参数对象。

  • va_arg()

这个方法依次获取参数对象。参数第二个的意思是将当前获取的值赋值为什么类型。

  • va_end()

在使用va_start()方法后必须也使用va_end()方法。

 

va_copy()方法一般情况下用不到,用来复制变长参数。当系统参数是通过寄存器值进行传递时,需要保存参数时,我们可以使用这个方法为参数分配内存空间。分配的过程然后是通过va_start()方法来实现的。在使用完va_copy方法之后,在同一个方法里,必须使用一次va_end()方法。

 

例:

 

上面这个方法获取一个格式化输入并将之打印出来。

阅读更多
个人分类: C/C++类
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭