1.指针是变量,变量中储存的是指针指向对象的地址;引用是取别名(&a=b),本质上来说是就是a和b是同样的,所属地址也是一样的。
2.既然是变量,sizeof(指针)的值就为变量所属数据类型的大小,而sizeof(引用)得到的是引用指向变量的大小。
3.指针可以为空,引用不行,且必须初始化。
4.指针可以多个叠用,***a;而引用不行;
5.指针在初始化后可以改变指向(除了const),而引用初始化后不行(类似常量指针);
野指针:指向被释放的或者访问受限内存的指针。
造成野指针的原因:
1.指针变量没有被初始化(如果值不定,可以初始化为NULL)
2.指针被free或者delete后,没有置为NULL, free和delete只是把指针所指向的内存给释放掉,并没有把指针本身干掉,此时指针指向的是“垃圾”内存。释放后的指针应该被置为NULL.
3.指针操作超越了变量的作用范围,比如返回指向栈内存的指针就是野指针。
网友评论