• 1.摘要
  • 2.基本信息
  • 3.基本简介
  • 4.编码应用
  • 5.参考资料

Null

4
在计算中具有保留的值

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

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

基本信息

  • 中文名

    空值

  • 外文名

    Null

  • 含义

    在计算中具有保留的值

  • 使用范围

    用于指示指针不引用有效对象

  • 表示

    空指针

  • 所属学科

    信息学

基本简介

Null

空字符通常表示为源代码字符串字符或字符常量中的转义序列。在许多语言,这不是一个单独的转义序列,而是八进制转义序列,单个八进制数字为0;因此,‘\0’不能跟随任何数字0通过7;否则它被解释为更长的八进制转义序列的开始。被在使用中发现各种语言的其他转义序列\000,\x00,\z,或的Unicode表示\u0000。

表示空字符的能力并不总是意味着生成的字符串将被正确解释,因为许多程序将认为null作为字符串的结尾。因此,键入它的能力(在未经检查的用户输入的情况下)会创建一个称为空字节注入的漏洞,并可能导致安全漏洞。

空字符以逗号表示是^@。在Windows上,可以通过按住Ctrl键,然后按@(这通常需要同时按下⇧ Shift并按下数字2键)。

在文档中的空字符有时表示为单EM含有字母“NUL” -width符号。在Unicode中,有一个具有相应字符的字符,用于空字符的可视表示,“null”符号,U + 2400(␀),但不要与实际的空字符U + 0000混淆2

指针定义

C

Null

在C中,任何类型的两个空指针都保证比较相等。预处理器宏NULL被定义为实现定义的空指针常量,它在C99中可以可移植地表示为0隐式或显式转换为类型的整数值void*(指向void的指针)。C标准没有说空指针与指向内存地址0 的指针相同,尽管在实践中可能就是这种情况。解引用空指针是C中的未定义行为,并且允许符合要求的实现假定任何被解除引用的指针不为空。

实际上,取消引用空指针可能会导致尝试从未映射的内存中读取或写入,从而触发分段错误或内存访问冲突。这可能表现为程序崩溃,或者转换为可由程序代码捕获的软件异常。但是,在某些情况下并非如此。例如,在x86实模式中,地址0000:0000是可读的并且通常也是可写的,并且取消引用指向该地址的指针是完全有效但通常不需要的操作,可能导致应用程序中的未定义但非崩溃的行为。有时解除引用地址为零的指针是有意的、明确的;例如,用C语言编写的用于16位实模式x86设备的BIOS代码可以通过解除引用空指针来写入机器的物理地址0处的IDT。编译器还可以优化掉空指针解除引用,避免分段错误但引起其他不希望的行为。

这通常在头文件stddef.h下定义:

C++

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

SQL

Null在数据库中表示 不知道的数据,主要有3种意思:

  • 知道数据存在,但不知道具体值.

  • 不知道数据是否存在.

  • 数据不存在.

NULL与0有着扯不断理还乱的关系,其实不那么高深。0本身有着一些原生的特性诸如:起始,没有,正负的分界线,0/1中的0还可以表示否定。NULL正需要这些特性中的一部分。 我们只需要清楚NULL的本质,并在合理的地方才加以利用而非滥用。

MATLAB