如何使用以下参数调用函数:fun(Ty-param[NUM])

How to call a function with this parameter: fun(Ty param[NUM])?

本文关键字:Ty-param NUM fun 何使用 参数 函数 调用      更新时间:2023-10-16

在API头文件中,我发现了一个奇怪的函数声明:

void API_GetParameter(API_SOMESTRUCT param[API_NUM_CONST]);

其中API_NUM_CONST是枚举值,API_SOMESTRUCT是结构,所以我猜测param是该结构的数组。

因此,函数需要一个现有的数据字段,它会填充或更改该字段我不能说API函数在内部做什么

现在,我的代码是这样的:

API_SOMESTRUCT *param = new API_SOMESTRUCT[API_NUM_CONST];
API_GetParameter(param);
// ... read out param
delete[] param;
param = NULL;

但我怀疑这段代码是我最近收到的堆损坏错误的原因,我不确定我的调用是否正确。


我理解具有非常数数组的函数头,用于如下参数:

void fun(int *arr); // expects a pointer to a non-const int array of arbitrary size...
  • 那么API函数声明的确切含义是什么呢
  • param是通过值调用还是通过引用调用
  • 如何正确调用该函数

声明void f(int x[3]);void f(int *x);相同,因此,函数需要接收一个指向API_SOMESTRUCT的有效指针。否则,你就不知道它要做什么,它期望有多少元素,或者它要用它们做什么。你必须阅读文档。

如果非要我猜测的话,我会传入一个API_NUM_CONST元素的数组,它只是在堆栈上分配的:

API_SOMESTRUCT param[API_NUM_CONST]
API_GetParameter(param);
// use param