万水千山只等闲

常用链接

统计

最新评论

va_list、va_start和va_end的使用

函数参数是以栈的形式存取,从右至左入栈,当无法列出传递给函数的所有实参的类型和数目时,可用省略号指定参数表。

获取省略号指定的参数的方法:在函数体中声明一个va_list,然后用va_start函数来获取参数列表中的参数,使用完毕后调用va_end()结束。

va_list是一个字符指针,可以理解为指向当前参数的一个指针,取参必须通过这个指针进行。在调用参数表之前,在函数体中声明一个va_list类型的变量ap;

然后用va_start()实现ap的初始化,让它指向可变参数表里面的第一个参数。该函数有两个参数,第一个参数就是ap,第二个参数是在变量表前面紧挨着的一个变量,即“……”之前的那个参数;

然后是获取参数,调用va_arg()函数,它的第一个参数是ap,第二个参数是要获取的参数的指定类型,然后返回这个指定类型的值,并且把ap的位置指向变参表的下一个变量位置;

获取所有参数之后,必须将这个ap指针关掉,以免发生危险,方法是调用va_end()函数,它将输入的参数ap置为NULL。

posted on 2012-06-05 09:12 Winnie 阅读(254) 评论(0)  编辑 收藏 引用 所属分类: API函数、命令和参数介绍


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理