获取另一个指针指向的指针中的值?

时间:2020-10-25 16:50:54

标签: c pointers struct

我有一个存储线程结构的队列

typedef struct __threaddesc
{
    int threadid;
    char *threadstack;
    void *threadfunc;
    ucontext_t threadcontext;
} threaddesc;

函数create_node(void *data)返回定义如下的队列条目结构:

struct queue_entry {
    void *data;
    STAILQ_ENTRY(queue_entry) entries;
};

当我致电*node = create_node(&threaddesc_pointer)时,如何访问threaddesc的成员?

我尝试了以下操作,但不起作用:

printf("%d\n", node->data->threadid)

我收到此错误:请求成员“ threadid”使用的不是结构体或联合体

1 个答案:

答案 0 :(得分:1)

data的类型为void *,您需要将其强制转换为正确的指针类型(假设它引用了该类型的有效对象)。

printf("%d\n", node->data->threadid);

---->

printf("%d\n", ((threaddesc *)(node->data))->threadid);
相关问题