Null

更新时间:2024-04-10 21:24

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

表示

空字符通常表示为源代码字符串字符或字符常量中的转义序列。在许多语言,这不是一个单独的转义序列,而是八进制转义序列,单个八进制Unicode表示。

表示空字符的能力并不总是意味着生成的字符串将被正确解释,因为许多程序将认为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下定义

C++

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

SQL

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

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

MATLAB

函数null用来求解零空间,即满足方程组A*X=0的解空间。实际上是求出解空间的一组解(基础解系)。

语法:z=null(A) %z的列向量为方程组的正交规范基,满足z‘ x z=I。

z=null(A,'r') %z的列向量是方程A*X=0的有理基。

PHP

NULL类型为 php 4 所引进,特殊的NULL值表示一个变量没有值(NULL类型唯一可能的值就是NULL)。

在下列情况下一个变量被认为是NULL:

JAVA

java中的null是一个关键字,通常用来声明一个空引用,

表示对象o是一个空引用,如果程序员对它进行了引用,就会抛出一个NullPointerException异常。

编码

在所有现代字符集中,空字符的代码点值为零。在大多数编码中,这被转换为具有零值的单个代码单元。例如在UTF-8中,它是一个零字节。然而,在修改的UTF-8中,空字符被编码为两个字节:0xC0,0x80。这允许值为零的字节(现在不用于任何字符)用作字符串终结符

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}