网站地图
hnsjyk999.com
三九百科 包罗万象
Null(空指针) 发布于:

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

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

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

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

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

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

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

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

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

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

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

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

不知道数据是否存在.

数据不存在.

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

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

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

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

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

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

被赋值为NULL

尚未被赋值

被unset()

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

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

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


相关文章推荐:
指针 | 列表 | 指针 | Unicode | 安全漏洞 | C99 | 内存地址 | 解引用 | 未定义行为 | 内存 | 异常 | 实模式 | 实模式 | BIOS | IDT | stddef.h | nullptr | unset |