C语言调用函数传递参数的时候通过栈实现,
参数从右向左入栈,所以通过指针取得首参数的地址么然后根据每个参数的类型长度进行指针跳转就可以指向后续的参数。
对于以上处理,C语言有一组宏对应实现:
如:
printf(const char* fmt, ...)
引用头文件:
#include "stdarg.h"
va_list ap;
va_start(ap, fmt); // ap 指向变长参数的第一个
va_arg(args,int); // 假如变长参数第一个是int类型,现在 ap指向下一个参数
va_end(ap); // 结束,清空ap