在我的代码中,我有一个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链接的正确方法吗?有更简单的方法吗?
答案 0 :(得分:1)
由于您希望能够修改指向的结构,因此您的示例代码不合适。它的作用是创建指向结构的本地副本,并修改本地副本而不是原始对象。
你想做什么,而不是:
int TestFunction(void *ptr) {
struct Test *test = ptr;
test->a = 0;
test->b = 1;
return 0;
}
a->b
语法相当于(*a).b
,这意味着它指的是test
个点。