2011-03-07 76 views
1
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

没有而无需告知的方式完整的代码。什么是结构分类器? – Lundin 2011-03-07 10:50:47

回答

2

将地址传递给结构的字段可能会导致麻烦,具体取决于您的运行时(并且是不良风格,但这是一种意见)。 相反的:

function(&ptr->keys[pos]); 
  • 您应该指针传递到结构:

    function(ptr);

    ,让函数去引用它(未封装但灵活)。

  • 或只是调用存储该字段中的值的函数,并分配到该字段当函数返回像这样:

    ptr->keys[pos] = function(ptr->keys[pos]);

相关问题