如何将struc分配给通过参数的void指针?

时间:2016-09-12 00:40:39

标签: c void-pointers

在我的代码中,我有一个struc

struct Test {
    int a;  
    int b;
    char c;
};

用我的功能:

int TestFunction(void* ptr){
    struct Test test;
    test.a = 0;
    test.b = 1;
    strcpy(c,"hello");

    return 0;
    }

现在将temp结构链接到我传入的void ptr我有

struct Test* temp = (struct Test*)ptr;
struct Test test = *temp;

这是将strucs与void ptrs链接的正确方法吗?有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

由于您希望能够修改指向的结构,因此您的示例代码不合适。它的作用是创建指向结构的本地副本,并修改本地副本而不是原始对象。

你想做什么,而不是:

int TestFunction(void *ptr) {
    struct Test *test = ptr;
    test->a = 0;
    test->b = 1;

    return 0;
}

a->b语法相当于(*a).b,这意味着它指的是test个点。