大家知道,计算机内部是二进制运行的,各种数据在内存之内存储,cpu根据程序内容取数据,处理数据并且把结果存回到内存;
写程序的时候如果把内存地址号拿来直接处理会引起很多麻烦,程序员要反复查找地址,所以引入了符号代替地址这个方法,这个代替地址的符号就是变量;也就是说变量是地址的别名,在编译器形成二进制程序的时候,会直接以地址代替掉变量名;在这里,变量名和内存地址是一对一对应的;
C++ 引入了“引用”这一概念;大部分教科书说这是给变量名起了一个别名,道理是一样的但是令人费解,变量名是啥,变量名在没有编译之前,是编译器变量列表里存储的一个地址的代名词;这里所谓的给变量起了一个别名,实际是给地址取了一个别名;
例如&b=a;实际的情况是&b,意思是取字符b代表的地址,实际还是取地址操作,但是c++中它可以作为左值,此时拿a所代表的地址给b;这是引用的根本意思;以后就可以用字符b来操作同一块内存了;
每个地址可以用无限个引用代表;
&c=a;&d=a; .....这样操作起来方便多了;
变量也好,引用也好,只是存储在编译器变量列表的名字,不占用内存,编译的时候被实际内存地址代替;