将空指针转换为结构体

标签 c pointers memory

假设我们有一个结构体“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/

相关文章:

c++ - 检测二进制文件的 GCC 编译时标志

c++ - 如何在 C++ 类中存储智能指针列表?

C++指针值改变

c - 为什么 valgrind 在一个简单的 while 循环中检测到如此多的内存分配

c - 内存动态分配问题 : main: malloc. c:3096: sSYSMALLOc

c - C 程序在请求第二个输入后崩溃

C 箱号+1 : need brackets?

c++ - 传递给函数的数组参数不是常量指针吗?

c - C中的内存映射文件

计算无符号整数中的位数