指针与引用的区别与联系:
区别:1.引用只能在定义时初始化一次,之后不能改变指向其他变量(从一而终);指针变量的值可变。
2.引用必须指向有效的变量,指针可以为空。
3.sizeof指针对象和引用对象的意义不一样。sizeof引用得到的是所指向变量的大小,而sizeof(指针)是对象地址的大小。
sizeof(指针)在32位平台是 4,在64位平台是8.
4.指针和引用自增(++)自减(--)意义不一样:引用自增改变变量的内容,指针自增改变指针指向
char* p ++p 表示:加一个字节
int* p2 ++p2 表示:加四个字节
5.指针比引用更灵活,但也危险,使用指针时,一定要检查指针是否为空,指针所指向的地址释放以后最好置为0,否则出现野指针问题。引用为别名,不可能为空,注意指针是相对安全。
如下图,引用也会出错:
联系:底层都是通过指针来实现的
引用:在语法上是别名,不创建变量
底层汇编实现上,创建变量通过指针来实现