如何从2个结构指针访问元素?

时间:2016-09-16 01:36:13

标签: c pointers gcc struct casting

我有一个指针& 2种不同的结构。第一个结构的成员是void *指针。现在我需要使用前一个指向第一个结构的指针来访问第二个结构的成员。

struct a {
  void *ptrxx;
}

struct b {
  int info;
}

struct a *ptr;

我需要做类似的事情:

 ptr->ptrxx->info;

但是我必须做某种类型转换让C知道ptr->ptrxx是指向struct b的指针。我怎么能在一个表达式中做到这一点(不需要额外的指针)?

PS:我得到error: request for member ***** in something not a structure or union.(gcc)。

1 个答案:

答案 0 :(得分:2)

((struct b *)(ptr->ptrxx))->info

可能不需要所有那些parens,但它有助于显示发生的事情的顺序。选取ptrxx成员struct avoid *),将其转换为指向struct b的指针,然后选择info成员。< / p>