函数参数是以数据结构:栈的形式存取,从右至左入栈.
1. va_list用于声明一个变量,我们知道函数的可变参数列表其实就是一个字符串,所以va_list才被声明为字符型指针,
这个类型用于声明一个指向参数列表的字符型指针变量,例如:va_list ap; //ap:arguement pointer
2. va_start(ap,v),它的第一个参数是指向可变参数字符串的变量,第二个参数是可变参数函数的第一个参数,通常用于指定可变参数列表中参数的个数。
3. va_arg(ap,t),它的第一个参数指向可变参数字符串的变量,第二个参数是可变参数的类型。
4. va_end(ap) 用于将存放可变参数字符串的变量清空(赋值为NULL)
int sum(int number,...) { va_list vaptr; int i = 0; int sum = 0; va_start(vaptr, number); for(i = 0; i < number; i++) { printf("fjut:%d\n", va_arg(vaptr, int)); } va_end(vaptr); return sum; } void fun(int a, ...) { int* temp = &a; temp++; for (int i = 0; i < a; i++) { cout << *temp<< endl; temp++; } } int main () { fun (4, 4, 3, 2, 1); sum (4, 4, 3, 2, 1); return 0; }