C取消引用结构中的整数指针

时间:2017-08-04 17:49:22

标签: 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?

谢谢和问候......保罗

1 个答案:

答案 0 :(得分:1)

您需要初始化指针。在初始化数组时,结构中的指针并没有指向任何东西。

因此,对于数组中的每个结构,您希望取消引用指针并为其赋值,您需要先在内存中分配空间。

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;