gpt4 book ai didi

c - 将 void* 变量分配给结构变量

转载 作者:行者123 更新时间:2023-11-30 15:31:59 28 4
gpt4 key购买 nike

我有一个 void* 变量,我通过套接字连接获取它。我需要将其转换为结构类型,该类型在客户端和服务器端都定义。

我在下面的代码中提供了相关作业的示例。在示例中,为了简洁起见,我省略了网络代码。

#include <stdio.h>
#include <stdlib.h>


typedef struct
{
int x;
int y;
} testStructType;


void someFunction(void* p)
{
//some processing goes here.


}


int main(void) {

testStructType testStruct;
void* p;

p=malloc(sizeof(testStructType));

someFunction(p);


testStruct=p;


printf("%i ,%i",testStruct.x,testStruct.y);

return EXIT_SUCCESS;
}

问题是我收到错误从“void*”分配给“testStructType”类型时出现不兼容的类型

我做错了什么?有人可以帮我吗?

最佳答案

你的意思是

testStruct = *(testStructType *)p;

要获取指针指向的内容,您需要取消引用它。

这会生成该结构的副本。如果您实际上不需要副本,则可以直接访问原始版本:

testStructType *pt = p;
printf("%i ,%i", pt->x, pt->y);

请注意,您不是“通过套接字连接获取 void* 变量”。您正在通过套接字连接获取一些数据,并且 void* 变量指向该数据。

关于c - 将 void* 变量分配给结构变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24478149/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com