运行以下C语言代码,为什么会出现段错误(核心已转储)?

大神哪位知道,运行以下C语言代码,为什么会出现段错误(核心已转储)?
最新回答
森屿微央

2025-03-02 00:00:38

问题主要在于你int *w;后只是定义了一个指针,并没有给w分配空间,而你又给*w赋值,导致内存错误了

你的fun函数里,w为什么要定义成一个指针呢
直接
int w;就可以了
追问
我改成int a = 0;int *w = &a;就可以了;
追答
肯定不行啊,你给int *w=NULL的意思是w指向一个空指针,你下文中给空指针去赋值,肯定会内存出错啊
追问
空指针没有指向任何存储区吗?
追答
空指针指向的地址是0 我们无法对它进行读取操作.
追问
谢谢你
追答
不用谢~~
捣碎幻觉

2025-03-02 00:00:09

你定义了指针w,却没有说w指向哪里,w就随机指向一个东西,发生了错误。
把int *w改成int w;
后面也是,w=*a;……;*b=w;
追问
我改成int *w = NULL;为什么还不可以呢?
追答
如果指向Null,Null是常量,值是不能被改变的!!!!
风居住的味道

2025-03-02 00:00:38

因为在你的fun函数中,声明了一个未初始化的w指针,执行*w=*a的时候,发生了错误
追问
初始化成int *w = NULL;为什么不可以呢?