当我在写数据结构中的数组的表示和实现时遇到了一些问题,那就是函数的参数数目不定。下面是我找到的答案,希望对大家有用:
1:当无法列出传递函数的所有实参的类型和数目
时,可用省略号指定参数表
void foo(...);
void foo(parm_list,...);
2:函数参数的传递原理
函数参数是以数据结构:栈的形式存取,从右至左入
栈.eg:
#include <iostream>
void fun(int a, ...)
{
int *temp = &a;
temp++;
for (int i = 0; i < a; ++i)
{
cout << *temp << endl;
temp++;
}
}
int main()
{
int a = 1;
int b = 2;
int c = 3;
int d = 4;
fun(4, a, b, c, d);
system("pause");
return 0;
}
Output::
1
2
3
4
3:获取省略号指定的参数
在函数体中声明一个va_list,然后用va_start函数
来获取参数列表中的参数,使用完毕后调用
va_end()结束。像这段代码:
void TestFun(char* pszDest, int
1:当无法列出传递函数的所有实参的类型和数目
时,可用省略号指定参数表
void foo(...);
void foo(parm_list,...);
2:函数参数的传递原理
函数参数是以数据结构:栈的形式存取,从右至左入
栈.eg:
#include <iostream>
void fun(int a, ...)
{
int *temp = &a;
temp++;
for (int i = 0; i < a; ++i)
{
cout << *temp << endl;
temp++;
}
}
int main()
{
int a = 1;
int b = 2;
int c = 3;
int d = 4;
fun(4, a, b, c, d);
system("pause");
return 0;
}
Output::
1
2
3
4
3:获取省略号指定的参数
在函数体中声明一个va_list,然后用va_start函数
来获取参数列表中的参数,使用完毕后调用
va_end()结束。像这段代码:
void TestFun(char* pszDest, int