转载

指针与引用的区别和联系

指针与引用的区别:

The difference between "pointer" and "reference"

区别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限制,可以反复给它赋新地址。

The similarity between "pointer" and "reference"

相同点:

引用和指针都是间接访问对象的方式

正文到此结束
Loading...