Nil 和 Null 的区别?

在<算法:4> 里面, 空一般用Nil 来描述.
但是在严蔚敏的 <数据结构> 的, 空被描述为Null.
请问二者之间有什么区别?

一、概念不同

Nil:表示无值,任何变量在没有被赋值之前的值都为nil。

Null:是在计算中具有保留的值。

二、功能不同

Nil:用于区别其他任何值。

Null:用于指示指针不引用有效对象。

三、针对不同

Nil:针对对象,而空对象不是说不占用空间,相当于一个“洗白”,回到初始状态。

Null:针对指针,对对象指针和非对象指针都有效,Null不会占用空间。

扩展资料

Null的编码

在所有现代字符集中,空字符的代码点值为零。在大多数编码中,这被转换为具有零值的单个代码单元。例如在UTF-8中,它是一个零字节。

然而,在修改的UTF-8中,空字符被编码为两个字节:0xC0,0x80。这允许值为零的字节(现在不用于任何字符)用作字符串终结符。

参考资料

百度百科--nil

百度百科--Null

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-19

一、含义不同

1、Nil:只能作为指针变量的值。 如果1个指针变量的值是NULL值代表.。代表这个指针不指向内存中的任何1块空间。

2、Null:NULL等价于0 NULL是1个宏,代表0。

二、用法不同

1、Nil:OC的类指针用nil。

2、Null:C指针用NULL。

三、原理不同

1、Nil:如果一个类指针的值为nil 代表这个指针不指向任何对象。Person *p1 = nil;

通过p1指针去访问p1指针指向的对象的属性 这个时候会运行报错。

2、Null:如果一个类指针的值为NULL,代表这个指针指向空白的空间,Person *p1 = NULL。通过p1指针去调用对象的方法 运行不会报错 但是方法不会执行没有任何反应。

参考资料来源:百度百科-nil

参考资料来源:百度百科-NULL

本回答被网友采纳
第2个回答  推荐于2017-09-21
Nil: A null pointer to an Objective-C class.表示对类进行赋空值
NULL: A null pointer to anything else, is for C-style memory pointers. 用于对非对象指针赋空值,比如C指针

Nil 只针对对象,而 空对象 不是说不占用空间,相当于一个“洗白”,回到初始状态。

Null 是 空值,是针对指针的,对对象指针和非对象指针都有效,Null不会占用空间。本回答被提问者和网友采纳
相似回答