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

如题所述

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

你的fun函数里,w为什么要定义成一个指针呢
直接
int w;就可以了追问

我改成int a = 0;int *w = &a;就可以了;

追答

肯定不行啊,你给int *w=NULL的意思是w指向一个空指针,你下文中给空指针去赋值,肯定会内存出错啊

追问

空指针没有指向任何存储区吗?

追答

空指针指向的地址是0 我们无法对它进行读取操作.

追问

谢谢你

追答

不用谢~~

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-04-21
你定义了指针w,却没有说w指向哪里,w就随机指向一个东西,发生了错误。
把int *w改成int w;
后面也是,w=*a;……;*b=w;追问

我改成int *w = NULL;为什么还不可以呢?

追答

如果指向Null,Null是常量,值是不能被改变的!!!!

第2个回答  2015-04-21
因为在你的fun函数中,声明了一个未初始化的w指针,执行*w=*a的时候,发生了错误追问

初始化成int *w = NULL;为什么不可以呢?

相似回答