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

标签 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);
}

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

最佳答案

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/

相关文章:

java - 滚动 Pane 如何滚动

c - 如何使用信号量在进程之间强制执行操作顺序?

将一个文件的数据复制到另一个文件

c - s(n)printf 打印比格式说明符指定的字符更多的字符

objective-c - 如何在 Objective-C 中在自己的文件中定义一个 c 结构并将该结构作为参数传递

c - 尝试从 argv[] 读取文件时出现核心段错误

C 编程模式

c - 程序不响应终端发送的 linux 信号而无需在终端上连续打印

c - 编程 Linux 应用程序以同时播放多个声音

c - 丢弃捕获的数据包