地址传递给一个函数,并把它分配给另一个变量
问题描述:
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
在任何情况下,它会影响我整个代码请帮忙。
答
将地址传递给结构的字段可能会导致麻烦,具体取决于您的运行时(并且是不良风格,但这是一种意见)。 相反的:
function(&ptr->keys[pos]);
-
您应该指针传递到结构:
function(ptr);
,让函数去引用它(未封装但灵活)。
-
或只是调用存储该字段中的值的函数,并分配到该字段当函数返回像这样:
ptr->keys[pos] = function(ptr->keys[pos]);
没有而无需告知的方式完整的代码。什么是结构分类器? – Lundin 2011-03-07 10:50:47