引用与指针的区别:
1.引用同指针的底层一致,引用的底层就是指针
2.引用必须初始化,且不能被NULL初始化,初始化后绑定此对象不能再被改变绑定到别的对象。指针可以不初始化,可以被NULL初始化,且可以改变指向其他的对象
3.引用和指针对于sizeof,自增自减等运算符的不同
4.引用比指针更加安全,引用不能为NULL,引用必须初始化等特点
5.引用的底层是指针,但是比指针更加好用,对引用做改变就是对原变量改变,而指针还需要解引用才能操纵原变量
#include <iostream>//对于引用是否有内存空间的验证
using namespace std;
int main()
{
int a = 10;
int &b = a;
int *c = &a;
cout<<b;
return 0;
}
//所形成的关键的汇编代码
int a = 10;
0114436E mov dword ptr [a],0Ah
int &b = a;
01144375 lea eax,[a]
01144378 mov dword ptr [b],eax
int *c = &a;
0114437B lea eax,[a]
0114437E mov dword ptr [c],eax
cout<<b; //可以看到指针和引用的底层是一致的
运行过程中通过内存查看来查看指针是否占用了地址,看以看到有两个 80 fd 3a 00,其是指针和引用的内容物,指向的是10
0x003AFD64 cc cc cc cc ????
0x003AFD68 80 fd 3a 00 €?:.
0x003AFD6C cc cc cc cc ????
0x003AFD70 cc cc cc cc ????
0x003AFD74 80 fd 3a 00 €?:.
0x003AFD78 cc cc cc cc ????
0x003AFD7C cc cc cc cc ????
0x003AFD80 0a 00 00 00 ....