2017-08-04 70 views
1

我正確地解決了指向駐留在結構數組中的整數的指針問題。代碼的相關部分是:C取消引用結構中的整數指針

typedef struct hf_register_info { 
    int     *p_id; /**< written to by register() function */ 
    header_field_info  hfinfo; /**< the field info to be registered */ 
} hf_register_info; 
. 
. 
hf_register_info hf[MAX_HF_COUNT]; 
. 
. 
*(hf[i].p_id) = -1; 

的代碼的最後一行以上導致異常。我如何正確尊重p_id?

感謝和問候......保羅

+3

是的,語法是正確的,你也可以刪除缺口。 'p_id'指向哪裏? – mch

+2

指針實際上是否指向任何有效的指針?否則,解引用指針會導致*未定義行爲*。 –

+1

爲什麼你認爲這些是代碼的唯一相關部分?我的意思是,如果你已經知道問題是什麼,你爲什麼在這裏問? – melpomene

回答

0

需要初始化您的指針。你的結構中的指針在你初始化數組的時候並沒有指向任何東西。

因此,對於數組中的每個結構,您想取消引用您的指針併爲其賦值,您需要首先在內存中分配空間。

hf_register_info hf[MAX_HF_COUNT]; 

// some code here 

hf[i].p_id = malloc(sizeof(int)); // or unsigned long or whatever 
*(hf[i].p_id) = -1; 
+0

當然,謝謝。 –