需要获取父指针值,最好的方法是什么

时间:2016-07-29 23:08:23

标签: c pointers

typedef struct node_ {

    avl_node node;
    some_struct *data;
}node_t;

现在如果一个函数(API)返回我指向数据的指针有一种方法,我可以得到结构node_t指针吗?

例如:

node_t *a = malloc(sizeof(node_t));

a->data = malloc(sizeof(some_struct));

//some code

//a->data->key = some_val;

//avl_insert(a->data->key)


/* API to get the data, which return pointer of type some_struct*/
some_struct *temp;

temp = get_data(key)

我有办法获得" temp"的指针node_t。

请让我知道最好的方法是什么。

1 个答案:

答案 0 :(得分:2)

如果需要返回包含数据的节点,则必须自己构建关联。也许最直接的方法是扩展some_struct

typedef struct my_some_struct {
    some_struct ss;
    struct node_ *back;
} my_some_struct;

typedef struct node_ {
    avl_node node;
    my_some_struct *data;
}node_t;

node_t *a = malloc(sizeof(node_t));
a->data = malloc(sizeof(my_some_struct));
a->data->back = a;

my_some_struct *temp;
temp = get_data(key);
some_struct *ss = &temp->ss;
node_t *back = tmp->back;

或者,您可以使用API​​扩展AVL树,以返回给定node_t *的{​​{1}}。

key