将结构内部使用的void*指针类型转换为int*指针时出现问题!

Yod*_*odA 0 c

我的代码如下,

#include<stdio.h>
struct data
{
    int a ;
    void *b;
};

int main()
{
    struct data *d;
    int *ptr;

    int key=10000;
    d->b=&key;

    ptr=(int *)d->b;
    printf("%d\n",*ptr);
}
Run Code Online (Sandbox Code Playgroud)

我得到了分段错误!知道为什么?? 在此先感谢您的帮助

Bla*_*iev 5

struct data *d只是声明一个指针.您没有在任何地方分配此结构.您需要malloc它或者struct data d在堆栈上或全局声明它.

前者可以这样做:

d = malloc(sizeof(struct data));
Run Code Online (Sandbox Code Playgroud)

如果选择后者,b则必须将访问写为d.b.