【问题标题】:How can i access an element from 2 structures pointers ?如何从 2 个结构指针访问元素?
【发布时间】:2017-01-24 03:50:16
【问题描述】:

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

struct a {
  void *ptrxx;
}

struct b {
  int info;
}

struct a *ptr;

我需要做类似的事情:

 ptr->ptrxx->info;

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

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

【问题讨论】:

    标签: c pointers gcc struct casting


    【解决方案1】:
    ((struct b *)(ptr->ptrxx))->info
    

    可能不需要所有这些括号,但它有助于显示正在发生的事情的顺序。取struct a(即void *)的ptrxx 成员,将其转换为指向struct b 的指针,然后取其中的info 成员。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-04
      • 2011-06-04
      • 1970-01-01
      • 2023-02-16
      • 2020-11-05
      • 2013-06-11
      • 2013-05-26
      • 1970-01-01
      相关资源
      最近更新 更多