指针和引用的区别

指针与引用的区别与联系:

区别:1.引用只能在定义时初始化一次,之后不能改变指向其他变量(从一而终);指针变量的值可变。

2.引用必须指向有效的变量,指针可以为空。

3.sizeof指针对象和引用对象的意义不一样。sizeof引用得到的是所指向变量的大小,而sizeof(指针)是对象地址的大小。

   sizeof(指针)在32位平台是 4,在64位平台是8.

4.指针和引用自增(++)自减(--)意义不一样:引用自增改变变量的内容,指针自增改变指针指向

   char* p    ++p    表示:加一个字节

   int* p2       ++p2 表示:加四个字节

5.指针比引用更灵活,但也危险,使用指针时,一定要检查指针是否为空,指针所指向的地址释放以后最好置为0,否则出现野指针问题。引用为别名,不可能为空,注意指针是相对安全。

 如下图,引用也会出错:

指针和引用的区别

联系:底层都是通过指针来实现的      

指针和引用的区别

指针和引用的区别


引用:在语法上是别名,不创建变量

         底层汇编实现上,创建变量通过指针来实现