if ((pos < n) && (key == ptr->keys[pos].value))
function(&ptr->keys[pos]);
这里我需要将ptr->keys[pos]
的地址传递给函数,我已经完成了如上所示,我在另一个函数中调用了这个“函数”
inline struct return_values *function(struct classifier *fun_ptr)
{
struct return_values *r;
r = malloc(sizeof(struct return_values));
r->value1 = Duplicate;
r->value2 = (void *)get;
return r;
}
功能的定义如上所示我必须将ptr->keys[pos]
的地址分配给r->value2
结构return_values如下所示
struct return_values
{
KeyStatus_t value1;
void* value2;
}
如何将&ptr->keys[pos]
的地址分配给r->value2
,我能够将地址传递给函数表单,如何将该地址分配给r->value2
,我不想更改结构return_value
在任何情况下都会影响我的整个代码,请提供帮助。
答案 0 :(得分:2)
将地址传递给结构的字段可能会导致麻烦,具体取决于您的运行时(并且样式很糟糕,但这是一种观点)。 而不是:
function(&ptr->keys[pos]);
您应该将指针传递给struct:
function(ptr);
让函数取消引用它(不封装但灵活)。
或者只是使用存储在该字段中的值调用该函数,并在函数返回时分配给该字段,如下所示:
ptr->keys[pos] = function(ptr->keys[pos]);