C语言空(null)指针和NULL指针的区别详解!

本文详细阐述了C语言中空(null)指针与NULL指针的区别。空指针是一个值为0的整型常量表达式,确保不指向任何对象或函数,而NULL是空指针的别名,两者在指针上下文中的值等价,但NULL更符合编程规范。
摘要由CSDN通过智能技术生成

对于空(null)指针与 NULL 指针,相信许多读者对它们之间的关系都很迷惑,甚至有很大一部分读者会认为它们根本就是一回事。其实不然,它们之间存在着一定的本质区别,下面就来详细阐述它们之间的不同。

对于空(null)指针的概念,在 C 标准中明确地定义:值为 0 的整型常量表达式,或强制(转换)为“void*”类型的此类表达式,称为空指针常量。

当将一个空指针常量赋予一个指针或与指针作比较时,将把该常量转换为指向该类型的指针,这样的指针称为空指针。空指针在与指向任何对象或函数的指针作比较时保证不会相等。

根据上面的定义,我们可以对空指针做如下几点剖析:

        1) 每一种指针类型都有一个空指针,它与同类型的其他所有指针值都不相同。

        2) 由系统保证空指针不指向任何实际的对象或函数,也就是说,任何对象或者函数的地址都不可能是空指针,空指针与任何对象或函数的指针值都不相等。因此,取地址操作符 & 永远也不能得到空指针,同样对 malloc() 函数的成功调用也不会返回空指针,但如果调用失败,则 malloc() 函数返回空指针。

        3) 空指针表示“未分配”或者“尚未指向任何地方”。它与未初始化的指针有所不同,空指针可以确保不指向任何对象或函数,而未初始化指针可能指向任何地方。

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值