C语言空指针常量NULL

本文讲述了C语言中空指针(NULL)的概念,区分了NULL与野指针的区别,以及void指针的作用。同时,解释了单链表中最后一个节点指针域为NULL的意义,指出它是链表结构中的空指针标记。
摘要由CSDN通过智能技术生成

在C语言中,如果一个指针不指向任何数据,我们就称之为空指针,用NULL表示。
NULL 是一个标准规定的宏定义,用来表示空指针常量。
NULL 使 p 指向地址 0

【常数 0 是一个空指针常量,而 NULL 仅仅是它的一个别名。
NULL 可以确保是 0,但空(null)指针却不一定。
https://c.biancheng.net/view/364.html 】

定义一个指针都会给初始化一个有效地址来操作。
定义指针时,可将其初始化为NULL。

所有空指针常量null的数据地址都为0,因为操作系统不允许访问这个指针的数据。
大多数系统中都NULL宏定义为0,且将 0 作为不被使用的地址,所以运用 NULL作为0也不会毁坏数据。
但并非总是如此,也有系统会使用地址 0,但将 NULL 定义为其他值。所以不要把 NULL 和 0 等同起来。

野指针:简单来讲它就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)。
指针被定义时如果没有指向,就表示指针没有被初始化,就表示是野指针。
野指针的错误来源就是指针定义了以后没有初始化,也没有赋值
(总之就是指针没有明确的指向一个可用的内存空间),然后去解引用。

void指针与空指针NULL不同:
NULL说明指针不指向任何数据,是“空的”;
而Void指针实实在在地指向一块内存,只是不知道这块内存中是什么类型的数据。

【1. int *p = NULL; 代表定义一个指向整型变量的指针p,然后p的值设为NULL,也就是设为0;用另一种方式说,就是对一个刚定义的指向整型变量的指针,赋初始值,让其指向0地址。
2. *p = NULL; 代表对一个由指针p指向的变量(什么类型,不知道),赋值为0,是将那个变量赋值为0。
https://www.cnblogs.com/haore147/p/3647174.html 】

单链表最后一个结点的指针域为NULL:
该指针域中没有保存任何信息
该指针域中没有指针

正确的理解:该指针域中的指针没有指向任何数据
(该指针域中的指针是一个空指针NULL;最后一个结点的指针为空NULL)。
由于该指针不指向任何结点,可以理解为它已经脱离了这个链表,和链表已经没有关系了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值