指针与引用的区别:
区别1:
给指针A赋值的时侯,要么赋一个地址B,要么赋一个同类型的指针C
( 使用地址B赋值时,B中存储的值的类型要和A指针指向的类型一致。如果B指向的值用const 修饰,那么指针A在初始化时,最外面也要用const 修饰
使用指针C赋值时,如果指针C最外面使用const 修饰,如 const int * C OR const int * const C。 那么A在初始化时,最外面也要用const修饰
)
给引用A赋值的时侯,要么赋一个对象B,要么赋 一个引 用 C
( 前提: 这个对象B或者引用C的类型,都需要与引用A有转换关系
使用对象B赋值时,若A和B的类型一致:如果B用const 修饰,那么A也要用const 修饰
若A和B的类型不同:A一定要用const修饰 ( Explanation : 因为编译器会先把B转为一个 const typeOfReferenceA 类型的临时 变量,然后再把这个临时变量赋给引用A。正因为这个临时变量用const修饰,那么A也要用const 修饰 )
使用引用C赋值时,其情况与使用对象B赋值相仿
)
区别2:
引用不是一个对象,而指针是;引用在初始化时给它赋了一个地址后,就始终指向这个新地址。而指针,只要没有用const限制,可以反复给它赋新地址。
相同点:
引用和指针都是间接访问对象的方式