我有一个(希望)非常简单的问题,一直给我带来一些问题。鉴于这些结构
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;
}
至少编译和运行,但给了我胡言乱语。如果由于某种原因需要完整的文件来解决问题,请告诉我,虽然我确定还有其他错误,因为这个错误我还没有找到。
修改:修复代码
答案 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
的指针。