函数不定参数

函数参数是以数据结构:栈的形式存取,从右至左入栈.
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;

}

你可能感兴趣的:(函数)