我的代码如下,
#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)
我得到了分段错误!知道为什么?? 在此先感谢您的帮助
struct data *d只是声明一个指针.您没有在任何地方分配此结构.您需要malloc它或者struct data d在堆栈上或全局声明它.
前者可以这样做:
d = malloc(sizeof(struct data));
Run Code Online (Sandbox Code Playgroud)
如果选择后者,b则必须将访问写为d.b.