<stdarg.h>重要的宏定义

typedef char* va_list;
void va_start(va_list ap,prev_parm);
type va_arg(va_list ap,type);
void va_end(va_list ap);

  • va_list是一个字符指针,可以理解为指向当前参数的一个指针,取参必须通过这个指针进行。
  • <step1> 在调用参数表之前,定义一个va_list类型的变量,假设va_list类型变量被定义为ap
  • <step2> 然后通过使用va_start对ap进行初始化,使它指向可变参数列表中的第一个参数,其中prev_parm是可变参数的前一个参数
  • <step3> 获取参数,调用va_arg,它的第一个参数是ap,第二个参数是要获取的参数的指定类型,然后返回这个指定类型的值,并将ap的位置指向可变参数列表的下一个位置。
  • <step4> va_end用于关闭ap指针,使ap置为null。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我们在C语言编程中会遇到一些参数个数可变的函数,例如printf() 这个函数,它的定义是这样的: int pri...
    Mr_Me阅读 4,084评论 0 2
  • 1.在C中,变长参数的函数即参数个数可变、参数类型不定 的函数。当我们无法列出传递函数的所有实参的类型和数目时,以...
    孤独杂货铺阅读 5,757评论 1 1
  • 代码: -(NSString*)makeDrink:(NSString*)drink Fruit:(NSStrin...
    bada阅读 5,768评论 0 0
  • 1 今晚看了电影《南极之恋》,改编自导演吴有音创作的同名长篇小说。真的应该为导演和两位主演赵又廷和杨子姗点赞,很精...
    悟语wuyu阅读 3,971评论 3 7
  • 晚饭不能不吃,要摄入一定热量。三餐可以吃饱吃好,但拒绝油腻辛辣,多吃蔬菜少吃主食,加餐吃坚果和水果。 增加基础代谢...
    南屿和风阅读 747评论 0 0