2014-01-30 23 views
0

我有一个(希望)很简单的问题,一直给我一段时间的问题。鉴于这些结构检索具有多个嵌套结构指针的内存地址

typedef struct 
{ 
    void * entity; 
} link_t; 

typedef struct 
{ 
    link_t * current; 
} list_t; 

和函数原型

void *list_get_entity(list_t *list); 

我需要的功能list_get_entity来返回“实体”所指向的数据的地址。迄今为止我所能做到的最好的是

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

至少编译和运行,但给我胡言乱语。如果由于某种原因,需要完整的文件来弄清楚什么,请让我知道,但我相信还有其他错误,我还没有找到,因为这个错误。

编辑:固定的代码

回答

1

要获得entity指向的数据的地址,只返回它直接

return list->current->entity; 

void*是一个地址,因此直接返回它的价值将会给调用者数据

+0

从我可以告诉这个问题已经解决了,现在我感觉很蠢。现在我开始追踪我的其他(可能malloc相关的)错误。谢谢您的帮助! –

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