
Nil 和 Null 的区别?
但是在严蔚敏的 <数据结构> 的, 空被描述为Null.
请问二者之间有什么区别? 展开
一、概念不同
Nil:表示无值,任何变量在没有被赋值之前的值都为nil。
Null:是在计算中具有保留的值。
二、功能不同
Nil:用于区别其他任何值。
Null:用于指示指针不引用有效对象。
三、针对不同
Nil:针对对象,而空对象不是说不占用空间,相当于一个“洗白”,回到初始状态。
Null:针对指针,对对象指针和非对象指针都有效,Null不会占用空间。
扩展资料
Null的编码
在所有现代字符集中,空字符的代码点值为零。在大多数编码中,这被转换为具有零值的单个代码单元。例如在UTF-8中,它是一个零字节。
然而,在修改的UTF-8中,空字符被编码为两个字节:0xC0,0x80。这允许值为零的字节(现在不用于任何字符)用作字符串终结符。
参考资料
一、含义不同
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
NULL: A null pointer to anything else, is for C-style memory pointers. 用于对非对象指针赋空值,比如C指针
Nil 只针对对象,而 空对象 不是说不占用空间,相当于一个“洗白”,回到初始状态。
Null 是 空值,是针对指针的,对对象指针和非对象指针都有效,Null不会占用空间。