首页 > 代码库 > C 实现可变参数
C 实现可变参数
C中可以借助va_list实现可变参数:
va_start:使用传入的可变参数的第一个变量初始化va_list
va_arg:获取当前可变参数,每次调用时会将指针向后移
va_end:结束
利用这个机制实现可变参数时,需要保证传入的参数可判断结束位置,即第一个参数用于控制结束,同时传入的参数必须得有这个参数作为结束。
C可变参数的实现原理基于函数传参数的的栈,参数从右往左入??,通过第一个参数可以确定参数栈的位置,然后利用数据类型,配合结束符,可以将所有参数取出来。
#include <stdio.h> #include <stdarg.h> #include <string.h> void testchar(const char *var, ...) { va_list args; va_start(args, var); char *value; while(strcmp((value=http://www.mamicode.com/va_arg(args, char*)), var)) { printf("%s\t", value); } va_end(args); printf("\n"); } void testint(int count,...) { va_list args; va_start(args, count); for (int i=0; i<count; i++) { printf("%d\t", va_arg(args, int)); } printf("\n"); va_end(args); } int main(void) { testchar("eof", "abc", "123", "eof"); testint(3, 1, 2, 3); return 0; }
注意:va_start和va_end必须同时存在。
C 实现可变参数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。