繁体   English   中英

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

[英]Retrieving memory address with multiple nested struct pointers

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

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;
}

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

编辑:修复代码

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

return list->current->entity;

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

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指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM