将地址传递给函数并将其分配给另一个变量

时间:2011-03-07 10:46:18

标签: c

   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在任何情况下都会影响我的整个代码,请提供帮助。

1 个答案:

答案 0 :(得分:2)

将地址传递给结构的字段可能会导致麻烦,具体取决于您的运行时(并且样式很糟糕,但这是一种观点)。 而不是:

function(&ptr->keys[pos]);
  • 您应该将指针传递给struct:

    function(ptr);

    让函数取消引用它(不封装但灵活)。

  • 或者只是使用存储在该字段中的值调用该函数,并在函数返回时分配给该字段,如下所示:

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

相关问题