Null(空指针)

生活百科 2023-01-25 18:02生活百科www.aizhengw.cn

Null(空指针)

NULL是在计算中具有保留的值,用于指示指针不引用有效对象。程式通常使用空指针来表示条件,例如未知长度列表的结尾或未执行某些操作; 这种空指针的使用可以与可空类型和选项类型中的Nothing值进行比较。

空指针不应与未初始化的指针混淆保证空指针与指向有效对象的任何指针进行比较。,根据语言和实现,未初始化的指针可能没有任何此类保证。它可能与其他有效指针相等; 或者它可能比较等于空指针。它可能在不同的时间做两件事。

基本介绍

  • 中文名空值
  • 外文名Null
  • 含义在计算中具有保留的值
  • 使用範围用于指示指针不引用有效对象

表示

空字元通常表示为原始码字元串字元或字元常量中的转义序列。在许多语言,这不是一个单独的转义序列,而是八进制转义序列,单个八进制数字为0;,‘\0’不能跟随任何数字0通过7;否则它被解释为更长的八进制转义序列的开始。被在使用中发现各种语言的其他转义序列\000,\x00,\z,或的Unicode表示\u0000。
表示空字元的能力并不总是意味着生成的字元串将被正确解释,因为许多程式将认为null作为字元串的结尾。,键入它的能力(在未经检查的用户输入的情况下)会创建一个称为空位元组注入的漏洞,并可能导致安全漏洞。
空字元以逗号表示是^@。在Windows上,可以通过按住Ctrl键,然后按@(这通常需要按下 Shift并按下数字2键)。
在文档中的空字元有时表示为单EM含有字母“NUL” -width符号。在Unicode中,有一个具有相应字元的字元,用于空字元的可视表示,“null”符号,U + 2400(),但不要与实际的空字元U + 0000混淆。

定义

C

在C中,任何类型的两个空指针都保证比较相等。预处理器宏NULL被定义为实现定义的空指针常量,它在C99中可以可移植地表示为0隐式或显式转换为类型的整数值void(指向void的指针)。C标準没有说空指针与指向记忆体地址0 的指针相同,儘管在实践中可能就是这种情况。解引用空指针是C中的未定义行为,并且允许符合要求的实现假定任何被解除引用的指针不为空。
实际上,取消引用空指针可能会导致尝试从未映射的记忆体中读取或写入,从而触发分段错误或记忆体访问冲突。这可能表现为程式崩溃,或者转换为可由程式代码捕获的软体异常。,在某些情况下并非如此。例如,在x86实模式中,地址0000:0000是可读的并且通常也是可写的,并且取消引用指向该地址的指针是完全有效但通常不需要的操作,可能导致应用程式中的未定义但非崩溃的行为。有时解除引用地址为零的指针有意的、明确的;例如,用C语言编写的用于16位实模式x86设备的BIOS代码可以通过解除引用空指针来写入机器的物理地址0处的IDT。编译器还可以最佳化掉空指针解除引用,避免分段错误但引起其他不希望的行为。
这通常在头档案stddef.h下定义
/ Define NULL pointer value and the offset() macro /#ifndef NULL#define NULL ((void )0)#endif#endif

C++

在C ++中,虽然继承了C的NULL宏,但空指针常量优先解释为整型0而不是指针值,这极容易导致某些错误。故C++ 11引入了一个显式nullptr常量来代替。

SQL

Null在资料库中表示 不知道的数据,主要有3种意思
  • 知道数据存在,但不知道具体值.
  • 不知道数据是否存在.
  • 数据不存在.
NULL与0有着扯不断理还乱的关係,其实不那幺高深。0本身有着一些原生的特性诸如起始,没有,正负的分界线,0/1中的0还可以表示否定。NULL正需要这些特性中的一部分。 我们只需要清楚NULL的本质,并在合理的地方才加以利用而非滥用。

MATLAB

函式null用来求解零空间,即满足方程组AX=0的解空间。实际上是求出解空间的一组解(基础解系)。
语法z=null(A) %z的列向量为方程组的正交规范基,满足z‘ x z=I。
z=null(A,'r') %z的列向量是方程AX=0的有理基。

PHP

NULL类型为 php 4 所引进,特殊的NULL值表示一个变数没有值(NULL类型唯一可能的值就是NULL)。
在下列情况下一个变数被认为是NULL
  • 被赋值为NULL
  • 尚未被赋值
  • 被unset()

JAVA

java中的null是一个关键字,通常用来声明一个空引用,
Object o = null;
表示对象o是一个空引用,如果程式设计师对它进行了引用,就会抛出一个NullPointerException异常。

编码

在所有现代字元集中,空字元的代码点值为零。在大多数编码中,这被转换为具有零值的单个代码单元。例如在UTF-8中,它是一个零位元组。,在修改的UTF-8中,空字元被编码为两个位元组0xC0,0x80。这允许值为零的位元组(现在不用于任何字元)用作字元串终结符。
上一篇:DAT档案 下一篇:ISCTE-IUL里斯本大学学院

Copyright@2015-2025 www.aizhengw.cn 癌症网版板所有