如何使用此参数调用函数:fun(Ty param [NUM])?

时间:2012-02-21 11:56:45

标签: c++ arrays function-declaration

在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;

但是我怀疑这段代码要对我最近收到的堆损坏错误负责,而且我不确定我的通话是否正确。


我理解带有非const数组的函数头,其参数如下所示:

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

1 个答案:

答案 0 :(得分:1)

声明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