2011-03-07 106 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]);

相關問題