1.空指针
1>没有存储任何内存地址的指针就称为空指针(NULL指针)
2>空指针就是赋值为0的指针,在没有被具体初始化之前,其值为0
e g: Student *s1 = NULL;
Student s2 = nil;
2.野指针
野指针不是NULL指针,是指向垃圾内存的(不可用内存)的指针。野指针非常危险
e g: Student *stu = [Student alloc] init];
//内存中有个指针变量stu(地址0xff45), 指向了Student对象(地址:0xff43)
[stu setAge:10];
//给stu所指向的Student对象发送一条setAge:消息,即调用Student对象的setAge:方法。目前Student对象扔存在于内存中。
[stu release];
//给stu指向的Student对象发送一条release消息。Student对象会马上被销毁,所被占用的内存会被回收。地址0xff43的内存就变成了垃圾内存,指针变量stu仍指向这块内存,stu就称为野指针
[stu setAge:10];
//运行程序会发现是个野指针错误
stu = nil; [stu setAge:10];
//stu变成了空指针,stu就不再指向任何内存了,没有指向任何对象,消息发不出去的,不会造成任何影响,也不会报错。