C 使用函数调用设置数组中元素的值

C 使用函数调用设置数组中元素的值,c,arrays,reference,pass-by-reference,C,Arrays,Reference,Pass By Reference,我有一个需要设置值的数组。应该使用函数调用并通过引用传递元素来完成值设置 这是减速: DataRecord *pDataRecordArray; 分配如下: pDataRecordArray = (DataRecord*)malloc(sizeof(DataRecord*)*iIgnoreBottomRows); 这是设置功能: apr_status_t (*get_empty_data_record)(struct W *w,

我有一个需要设置值的数组。应该使用函数调用并通过引用传递元素来完成值设置

这是减速:

DataRecord  *pDataRecordArray;
分配如下:

pDataRecordArray = (DataRecord*)malloc(sizeof(DataRecord*)*iIgnoreBottomRows);
这是设置功能:

apr_status_t (*get_empty_data_record)(struct W *w,
                                          int                        x, 
                                          struct _DataRecord         **ppDataRecord, <---relevant parameter
                                          size_t                     y,
                                          size_t                     z);
这当然行不通,但我似乎找不到设置元素的方法


所有其他参数都无关紧要,因此使用XYZ命名


谢谢

如果要在数组中设置元素,请尝试这样调用函数

base_control.get_empty_data_record(w, 0, &pDataRecordArray, 0, 0);

请不要强制转换由
malloc
返回的空指针。我认识的大多数人都同意
malloc
最清晰的语法(也是最不容易出错的语法)是:
type*varName=malloc(10*sizeof*varName)因为你可以像读一句话一样读它:malloc十倍于“varName”类型的内存大小指向一个指向T类型的指针数组,它的类型是T**,而不是T*“所有其他参数都不重要,因此XYZ命名。”你太模糊了,以至于你的问题描述没有用处。例如,我认为
DataRecord
类型定义为
struct\u DataRecord*
,但我们不知道。
获取空数据记录的目的是什么?它是否在数据记录列表中设置了值?有一点是肯定的:它没有“得到”任何东西;它返回一个状态代码。为什么提供函数原型作为函数指针?为什么指针是结构的一部分?有太多的事情是值得怀疑的,不清楚你真正的问题是什么。哦,如果你不想显示你的部分代码-你的结构或参数的内容被认为是不必要的,请删除你的代码,并提供一个小的,自包含的例子来重现你的错误。在这种情况下,数组名称将衰减为指向其第一个元素的指针,传递
&pDataRecordArray
,然后传递指向指针的指针。(参见标准:C116.3.2.1左值、数组和函数指示符)感谢Elias Van Ootegem。我已经编辑了答案
base_control.get_empty_data_record(w, 0, &pDataRecordArray, 0, 0);