使用多个嵌套的struct指针检索内存地址

时间:2014-01-30 18:55:45

标签: c pointers struct

我有一个(希望)非常简单的问题,一直给我带来一些问题。鉴于这些结构

typedef struct
{
    void * entity;
} link_t;

typedef struct
{
    link_t * current;
} list_t;

和函数原型

void *list_get_entity(list_t *list);

我需要函数list_get_entity来返回“entity”指向的数据的地址。到目前为止我能做的最好的是

void *list_get_entity(list_t *list)
{
     return list->current->entity;
}

至少编译和运行,但给了我胡言乱语。如果由于某种原因需要完整的文件来解决问题,请告诉我,虽然我确定还有其他错误,因为这个错误我还没有找到。

修改:修复代码

2 个答案:

答案 0 :(得分:1)

要获取数据地址entity指向直接返回

return list->current->entity;

void*是一个地址,因此直接按值返回它将为调用者提供数据的地址

答案 1 :(得分:1)

typedef struct
{
   void * entity;
} link_t;

typedef struct
{
   link_t * current;
} list_t;

void * list_get_entity(list_t *list)
{
  return list->current->entity;
}

list->current是指向link_t的指针; list->current->entity是指向实体类型的指针。 如果在list->current->entity周围添加&(),它将成为指向void的指针。