我有一个带有这样的指针数组的顶级函数:
Membership *mf[5];
for(i=0;i<5;i++)
mf[i]=(Membership*) malloc(sizeof(Membership))
Membership
结构在哪里。到目前为止mf
一切顺利,并且在调试时可以正确显示所有5个实体。问题是当我将指针数组传递给函数(与指针无关)时,如下所示:
call_function(*mf)
在哪里这样call_function()
声明:
void call_function(Membership mf[5]){
normalize_function(mf[0],slope);
....
normalize_function(mf[5],fuel);
}
在那里,mf
长度变成1而不是5变得无用了,即使搜索/阅读并调试了一段时间后,我也无法理解我在做什么。请帮助我如何更改call_function()
(而不是指针数组)。
编辑:按照建议,我对代码做了一些更改。
Edit2:回应KyleStrand的回答:call_function()
与指针没有任何关系,因为该功能实际上将在FPGA(VHDL编码)中实现,并且指针存在不必要的复杂性。
当您说call_function
“与指针无关”时,您的意思不清楚。看来函数的最后一个参数是s的数组,Membership
实际上,数组非常类似于C中的指针。当您传递*mf
给函数时,您将取消引用该数组,也就是说,您正在访问该数组。数组的第一个成员。这不是您想要的,因为call_function
需要一个数组而不是一个array成员。@caveman的评论是正确的:您应该传递原始数组(即,不要取消引用它)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句