假设我们有一个结构体“message_t”:
message_t *msg;
如果函数返回 void 指针,我们可以简单地将地址分配给 msg,还是需要转换指针?:
void *data;
msg = data;
我见过“data”被转换为 message_t
的情况,但这似乎并不完全必要,那么在什么情况下您会这样做?
当然,指针类型(message_t)应该足以告诉编译器如何取消引用指针(即结构中的第一个变量需要多少字节等)。
如果我的问题不清楚,请告诉我。
最佳答案
您不需要强制转换 void 指针,但如果您愿意,也可以这样做,即为了清楚起见。以下简单示例说明了这一点:
void* data = malloc(32);
char* msg = data;
strcpy(msg, "Testing.");
关于将空指针转换为结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43790271/