目录
说明:
va_list是C标准库<stdarg.h>的一个可变参数列表,常用于函数传入不定数量的参数,使用时只能放置于参数的最后面(即最后一个参数)。
补充说明:
如果需要详细理解va_list需要明白一个原理,也就是函数参数在栈区是如何存储的,下面我们来说明一下在调用一个函数时各个参数是在栈区是如何存储的:
1、首先明确一个知识,C中,堆是自下向上增长的,栈是自顶向下增长的。
2、然后明确,C中参数入栈方式是自右向左依次入栈的。
在知道以上两点后,给定一个函数:
void tst(int arg1, int arg2, int arg3, int arg4){
//code
}
调用时我们便可以得到以下存储结构:
请记住该存储结构。
原型
#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )
#define va_start(ap,v) ( ap = (va_list