NUL是ASCII字符集中“\0”字符的名称,其字节模式全部为0。空指的是值为0的指针。它们都是整数值,它们的值是相同的,所以可以互换使用。但是,您仍然应该使用适当的常数,因为它不仅可以告诉读者使用值0,还可以告诉他使用值的目的。
空符号是在头文件staio.h中定义的。另一方面,没有预定义的符号NUL,所以如果您想使用它来代替字符常量’ \0 ‘,您必须自己定义它。
NULL是在几个标准头文件中定义的宏,0是整数常量,’ \0 ‘是字符常量,NUL是字符常量的名称。这些术语不能互换。
1.NULL用于表示没有任何内容指向,即空指针void *)0)
2,0可以在任何地方使用。它是一个代表各种类型的零值的符号,编译器会把它挑出来。
3.“0”应该仅用于结束字符串。
4.NUL在C和C中没有定义,除非您自己定义,否则不应使用它,如#define nul ‘\0 ‘
空指针:值为空,可以是0、0L或void*)0。
C的定义,每个指针类型,都是一个特殊的值,空指针。这与所有其他指针值不同,“确保不平等被比作指向任何对象或函数的指针”。也就是说,一个空指针应该是清晰的,它不是任何对象或函数的地址。地址提取操作符永远不会生成空指针,malloc也不会被成功调用。malloc返回null指针,这将无法分配内存。这是空指针作为“特殊”指针值和其他含义的典型用法,通常是“不分配”或“不指向任何地方”)。
空指针在概念上不同于未初始化的指针。已知空指针不指向任何对象或函数,未初始化的指针可能在其他任何地方。
如上所述,有一个空指针,它的值对于每个指针类型和内部不同类型的空指针可能是不同的。虽然程序员不需要知道内部值,但是编译器必须告诉它哪种类型的空指针是必要的,所以如果需要的话需要区别对待。
空指针的用法:
用空指针终止对递归数据结构的间接引用。
当函数调用失败时,使用空指针作为返回值。
使用空指针作为警告值。
请注意,当我们将0赋给指针变量时,我们绝不能试图使用存储在指针所指向的内存中的内容。示例:
以下文字完全合法:
佳群466572167交流学习
但是这样写是违法的:
佳群466572167交流学习
佳群466572167交流学习
空指针不指向任何对象。因此,除了赋值或比较操作之外,将空指针用于任何其他目的都是非法的。可以加一小群466572167交流学习。前几个非法的是错误。让我们在下面的小系列中向每个人解释它们。
1.什么是段落错误?
一旦一个程序已经越界访问,cpu就会产生相应的保护,这样就会出现分段故障。根据上面的解释,段错误应该是访问不可访问的内存,该内存要么不存在,要么受系统保护,要么可能是丢失文件或损坏文件。
二、段落错误的原因
以下是段错误:的一些典型原因。
无关联空指针3354,这是内存管理硬件的特例。
试图访问不存在的内存地址在进程的地址空间中)
试图访问内存的程序没有权限比如内核结构进程上下文)。
尝试写入只读存储器如代码段)
边肖会暂时把这个,NUL和C语言中NULL的区别,写在这里,对刚接触C语言的大家有帮助。