[英]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.