当前位置: 代码迷 >> 综合 >> 数据结构 数组 va_start() va_arg() va_end()
  详细解决方案

数据结构 数组 va_start() va_arg() va_end()

热度:95   发布时间:2024-01-09 16:16:37.0
当我在写数据结构中的数组的表示和实现时遇到了一些问题,那就是函数的参数数目不定。下面是我找到的答案,希望对大家有用:

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
  相关解决方案