1 内存单元的地址、值属性
程序的代码和数据要存储到内存才可以被执行。内存单元同时具有地址属性和值属性。
地址属性:每一个字节(8个位)都有一个内存地址对应,变量名就是对地址的命名,让其更好理解、记忆和使用;
值属性:一串的0、1二进制,按数据类型确定其长度和解码方案;
2 普通、指针、引用变量对地址、值属性的显式、隐式使用
普通、指针、引用变量的区别在于对地址、值属性的显式、隐式使用的方式不同:
3 引用的本质是一个实现的自动解引用指针常量
引用可以理解为其引用的变量的别名,但本质是一个实现的自动解引用指针常量。
在函数定义中,引用在形参在声明时,显式使用地址属性,类似指针变量的使用。在函数体中,显式使用变量(别名)的值属性,类似于普通变量,因为由编译器实现了自动解引用。
引用的常量属性,必须在声明时初始化(也就再没有机会做其它变量的别名或引用了),也因为其具有自动解引用的属性,声明(包括初始化)以外的使用都是显式对应其指向的地址的值的引用(相当于直接使用其引用(或指向)的普通变量)。
因为这些属性,相对于指针,引用更安全,使用更简洁。当然,引用不能替代指针,指针有自己的使用场合,特别是当其不断需要变更指向时。
#include using namespace std;void swap(int& a,int&b){int t;t=a;a=b;b=t;}void main(){int i=3;int j=5;swap(i,j);cout<