Null 值:在计算中,Null 通常用来表示一个变量没有指向任何有效的对象或值。在指针上下文中,Null 指针表示该指针不引用内存中的任何有效位置。这常用于表示条件,比如链表末尾或函数未返回有效结果时。
空指针(Null Pointer):空指针用于指示不引用任何有效对象的指针。在大多数编程语言中,空指针与任何有效对象的指针比较时,结果都应为不相等。
与可空类型和选项类型的比较:在一些现代编程语言中,有可空类型(Nullable Types)或选项类型(Option Types),它们用于明确表示一个变量可能没有值。在这些类型系统中,Nothing 或 None 值类似于 Null,用于表示“没有值”的状态。虽然具体实现和语义可能有所不同,但概念上是相似的。
未初始化的指针:未初始化的指针是指尚未被赋予任何有效地址的指针。它们的值是不确定的,可能指向内存中的任意位置。因此,未初始化的指针与空指针不同,不能保证其比较行为的一致性。未初始化的指针可能导致未定义行为,包括程序崩溃或安全漏洞。
语言和实现的差异:不同编程语言和处理器的内存管理策略可能导致空指针和未初始化指针的行为有所不同。因此,在编写代码时,了解并遵循所用语言的最佳实践至关重要。
空字符通常表示为源代码字符串字符或字符常量中的转义序列。在许多语言,这不是一个单独的转义序列,而是八进制转义序列,单个八进制数字为0;因此,‘\0’不能跟随任何数字0通过7;否则它被解释为更长的八进制转义序列的开始。被在使用中发现各种语言的其他转义序列\000,\x00,\z,或的Unicode表示\u0000。
表示空字符的能力并不总是意味着生成的字符串将被正确解释,因为许多程序将认为null作为字符串的结尾。因此,键入它的能力(在未经检查的用户输入的情况下)会创建一个称为空字节注入的漏洞,并可能导致安全漏洞。
空字符以逗号表示是^@。在Windows上,可以通过按住Ctrl键,然后按@(这通常需要同时按下⇧ Shift并按下数字2键)。
在文档中的空字符有时表示为单EM含有字母“NUL” -width符号。在Unicode中,有一个具有相应字符的字符,用于空字符的可视表示,“null”符号,U + 2400(␀),但不要与实际的空字符U + 0000混淆。[1]
在C中,任何类型的两个空指针都保证比较相等。预处理器宏NULL被定义为实现定义的空指针常量,它在C99中可以可移植地表示为0隐式或显式转换为类型的整数值void*(指向void的指针)。C标准没有说空指针与指向内存地址0 的指针相同,尽管在实践中可能就是这种情况。解引用空指针是C中的未定义行为,并且允许符合要求的实现假定任何被解除引用的指针不为空。