我的代码如下,
#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);
}
我遇到了段错误!!知道为什么吗?在此先感谢您的帮助
最佳答案
struct data *d
仅仅声明了一个指针。您尚未在任何地方分配此结构。您需要对其进行 malloc
或将其声明为堆栈上或全局的 struct data d
。
前者可以这样做:
d = malloc(sizeof(struct data));
如果选择后者,访问b
就得写成d.b
。
关于c - 将结构内部使用的 void * 指针类型转换为 int * 指针时出现问题!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6280224/