NULL指针

在一次面试时被问到NULL代表的含义
最终在C和指针中发现了详细的解释
解释如下

标准定义了NULL指针,他作为一个特殊的指针变量,表示不指向任何东西要使得一个指针变量未NULL,你可以给它赋一个零值。之所以选择一个零值是因为一种源代码的约定。就机器内部而言,NULL指针的实际值可能与此不同。在这种情况下,编译器将负责零值和内部值之间的翻译转换。

NULL指针的概念是非常有用的,因为他给你了一种方法,表示某个特定的指针目前并未指向任何东西。例如,一个用于在某个数组中查找某个特定值的函数可能返回一个指向查找到的数组元素的指针。如果该数组不包含指定条件的值,函数就会返回一个NULL指针。这个技巧允许返回值传达两个不同片段的信息。首先没做找到元素?其次如果找到,它是哪个元素。

提示:
尽管这个技巧在C长须中极为的常用,但它违背了软件工程的原则。用一个单一的值表示两种不同的意思是非常危险的事情,因为将来很容易无法弄清哪个才是它真正的用意,在大型的产股选中,这个问题会更为的严重,因为在头脑中不可能对整个设计一览无余。一种更安全的策略是让函数返回两个独立的值:首先是状态值,用于提示查找是否成功;其次是指针,当状态值提示查找成功时,它所指向的就是查找到的元素。

对指针进行解引用操作可以获得它所指向的值。但是从定义上看,NULL指针并未指向任何东西。因此对一个NULL指针进行解引用操作是非法的。在对指针进行解引用操作前,首先必须确保它并非是NULL指针。

警告:
如果对一个NULL指针进行间接访问会发生什么情况?**它的结果会因编译器而已**。在有些机器上,他会访问内存位置零。编译器能够确保内存位置量没有存储任何变量,但机器并未妨碍你访问或修改这个位置。这种行为是非常不幸的。因为程序包含了一个错误,但机器却将症状隐藏了,这样就会使得这个错误更加难以寻找。
在其他机器上,对NULL指针进行间接访问将已发一个错误,并终止程序,宣布这个错误要比隐藏这个错误好的多,因为程序员能更容易修正它。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值