1.可以理解成给一个已有的变量名,取一个别名
格式1.类型名 &引用名 = 同类型的某变量名;
2.此时的 “&”就不是之前我们讲到的取地址的意思了,而是引用一个变量的意思
1.先看如下代码
int iNum=0; int &iPhoneNum=iNum;
2.发现我们的变量名iNum被iPhoneNum给引用了
3.什么意思呢?
4.也就是此时iPhoneNum和iNum 都指的是同一个内存地址,也就相当于iPhoneNum是变量名iNum的另外一个名字
5.注意尽管一样,但是类型有些许不同iPhoneNum是int &类型,而iNum是int类型
1.定义引用时一定要将其初始化,否则编译无法通过。通常会用某个变量去初始化引用,初始化后,它就一直引用该变量,不会再引用别的变量。
也可以用一个引用去初始化另一个引用,这样两个引用就引用同一个变量。
int iNum=0; int &iPhoneNum=iNum; int &iHeartPhoneNum=iPhoneNum;
2.不能用常量初始化引用,也不能用表达式初始化引用(除非该表达式的返回值是某个变量的引用)。
const char cc = 'a'; char & r = cc; //编译出错,const char 类型的常变量不能用来初始化 char & 类型的引用 char & r2 = (char &)cc; //这种就没问题,强制类型转换
3.总之,引用只能引用变量。
使用场景 1.函数参数我们下节讲
2.函数返回值我们下节讲
3.常引用1.记得我们讲常量的时候说过,const这个关键字,如果在引用类型前加上const就成为了常引用
2.同样先看如下代码 英文:cite: 引用; 引证;
int iNum=0; //局部变量 int int &iNumCite=iNum; //iNumCite引用 int & const int &iHeartNumCite=iNum; //iHeartNumCite常引用 const int & iHeartNumCite=1;//很显然是错误的 iNumCite=2; //是对的
迪大交流群:285530835
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)