鱼C论坛

 找回密码
 立即注册
查看: 1082|回复: 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打印出来, 怎么会报错?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-2-10 20:39:31 From FishC Mobile | 显示全部楼层
NULL就是0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

上了小甲鱼的课,他那显示Segmentation fault,没显示=0。这又是什么原因
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

他应该是对p1 解引用  *

  1. #include<stdio.h>
  2. int main(){
  3.         int *p;
  4.         int *p1=NULL;
  5.         printf("p=%d\n",p);
  6.         printf("p1=%d",*p1);//对void * 类型进行 * 就会报错
  7.         return 0;
  8. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-10 23:48:13 | 显示全部楼层
在stdio.h里有宏定义
  1. #define NULL 0
复制代码

即NULL = 0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我的dvec++解引用运行的话就显示上一条,p1啥也不显示
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

段内存溢出
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

即NULL = 0
  1. #define NULL (void *(0))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

#define NULL (void *(0))
这两个都行,你用if判断都有一样的结果
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

是吗(O)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-11 18:06:54 | 显示全部楼层
NULL指针是空指针,C语言里定义为(void*)0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

那为什么Dev-C++不显示这个段内存溢出而回显示=0啊,求解
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

段错误是因为你尝试访问0地址, 打印只是把0打印出来, 怎么会报错?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

你在初始化时指定为NULL,也就是(void *(0)),0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-2 00:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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