鱼C论坛

 找回密码
 立即注册
查看: 934|回复: 13

[已解决]NULL指针不段落报错是什么原因

[复制链接]
发表于 2021-2-10 20:32:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
上玩viod指针和NULL指针的课程之后敲的代码如下:
#include<stdio.h>
int main(){
        int *p;
        int *p1=NULL;
        printf("p=%d\n",p);
        printf("p1=%d",p1);
        return 0;
}


运行结果为: p=0,p1=0

为什么我的NULL指针不会报错,直接输出为0呢?
大佬求解
最佳答案
2021-2-11 21:25:28
h5681901 发表于 2021-2-11 19:52
那为什么Dev-C++不显示这个段内存溢出而回显示=0啊,求解

段错误是因为你尝试访问0地址, 打印只是把0打印出来, 怎么会报错?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-10 20:39:31 From FishC Mobile | 显示全部楼层
NULL就是0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-10 20:41:33 | 显示全部楼层

上了小甲鱼的课,他那显示Segmentation fault,没显示=0。这又是什么原因
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-10 21:17:52 | 显示全部楼层
h5681901 发表于 2021-2-10 20:41
上了小甲鱼的课,他那显示Segmentation fault,没显示=0。这又是什么原因

他应该是对p1 解引用  *
#include<stdio.h>
int main(){
        int *p;
        int *p1=NULL;
        printf("p=%d\n",p);
        printf("p1=%d",*p1);//对void * 类型进行 * 就会报错
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-10 23:48:13 | 显示全部楼层
在stdio.h里有宏定义
#define NULL 0
即NULL = 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-11 09:07:15 | 显示全部楼层
李京 发表于 2021-2-10 21:17
他应该是对p1 解引用  *

我的dvec++解引用运行的话就显示上一条,p1啥也不显示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-11 12:39:46 From FishC Mobile | 显示全部楼层
h5681901 发表于 2021-2-10 20:41
上了小甲鱼的课,他那显示Segmentation fault,没显示=0。这又是什么原因

段内存溢出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-11 12:40:45 From FishC Mobile | 显示全部楼层
一叶枫残 发表于 2021-2-10 23:48
在stdio.h里有宏定义

即NULL = 0
#define NULL (void *(0))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-11 15:35:32 | 显示全部楼层

#define NULL (void *(0))
这两个都行,你用if判断都有一样的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-11 16:28:05 From FishC Mobile | 显示全部楼层
一叶枫残 发表于 2021-2-11 15:35
#define NULL (void *(0))
这两个都行,你用if判断都有一样的结果

是吗(O)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-11 18:06:54 | 显示全部楼层
NULL指针是空指针,C语言里定义为(void*)0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-11 19:52:34 | 显示全部楼层

那为什么Dev-C++不显示这个段内存溢出而回显示=0啊,求解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-11 21:25:28 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
h5681901 发表于 2021-2-11 19:52
那为什么Dev-C++不显示这个段内存溢出而回显示=0啊,求解

段错误是因为你尝试访问0地址, 打印只是把0打印出来, 怎么会报错?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-11 21:35:22 From FishC Mobile | 显示全部楼层
h5681901 发表于 2021-2-11 19:52
那为什么Dev-C++不显示这个段内存溢出而回显示=0啊,求解

你在初始化时指定为NULL,也就是(void *(0)),0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 15:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表