繁体   English   中英

将void *变量分配给struct变量

[英]Assign a void* variable to a struct variable

我有一个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 *变量指向该数据。

这是一个指针,所以该行读取

    testStructType testStruct;

应该读

    testStructType *testStruct;

那么以下代码需要更改为:

    testStruct = (testStructType *)p;

    printf("%d, %d", testStruct->x, testStruct->y);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM