无法从指针读取值

unable to read value from pointer

无法从 void 指针读取数据:

#include <windows.h>

typedef enum {
    ADDRESS,
    PERSON,
} DataType;

typedef struct {
    DataType type;
    void* data;
} Data;

Data* create_data(DataType type, void* data);

typedef struct {
    char* number;
    char* street;
    char* city;
    char* state;
    char* postalCode;
} Address;

typedef struct {
    int age;
    char* name;
} Person;

int CALLBACK WinMain(
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR     lpCmdLine,
    int       nShowCmd
) {
    // WRITE

    Address* home = malloc(sizeof(Address));
    home->number = "123";
    home->street = "Main";
    home->city = "New York";
    home->state = "NY";
    home->postalCode = "10001";

    Data* addressdata = create_data(ADDRESS, &home);

    // READ

    char* addressstreet = ((Address*)addressdata->data)->street;

}

Data* create_data(DataType type, void* data)
{
    Data* d = (Data*)malloc(sizeof(Data));
    d->type = type;
    d->data = data;

    return d;
}

读完你的问题后,我首先想到的是你怎么能取消引用一个空指针,因为它没有对象类型

中有 parameter 不匹配

Data* create_data(DataType type, void* data); & Data* addressdata = create_data(ADDRESS, &home);

而不是发送地址 home,即 create_data(ADDRESS, &home); 发送 create_data(ADDRESS, home);