C++对C语言的拓展——引用
1、变量名
变量名实质上是一段连续存储空间的别名,是一个标号(门牌号);
通过变量来申请并命名内存空间;
通过变量的名字可以使用内存空间。
2、引用的概念
变量名,本身是一段内存的引用,即别名(alias)。引用可以看作一个已定义变量的别名。
引用的语法:Type & name = var;
用法如下:
1 #include <iostream> 2 using namespace std; 3 4 int main(void) 5 { 6 int a = 10;//C编译器分配4个字节内存,a内存空间的别名 7 int &b = a;//b就是a的别名 8 9 a = 11; 10 { 11 int *p = &a; 12 *p = 12; 13 cout << a << endl;//12 14 } 15 b = 14; 16 cout << "a=" << a << ",b=" << b << endl;//a=14,b=14 17 return 0; 18 }View Code
3、规则
(1)引用没用定义,是一种关系型声明。声明它和原有某一变量(实体)的关系。故类型与原类型保持一致,且不分配内存,与被引用的变量有相同的地址。
(2)声明的时候必须初始化,一经声明,不可更改。
(3)可对引用,再次引用,多次引用的结果是某一变量具有多个别名。
(4)&符号前有数据类型时是引用,其它皆为地址。
1 #include <iostream> 2 using namespace std; 3 4 int main(void) 5 { 6 int a,b; 7 int &r = a; 8 int &r = b;//error,不可更改原有的引用关系——规则(2) 9 float &rr = b;//error,引用类型不匹配——规则(1) 10 cout <<"&r="<< &r << ",&a=" << &a << endl;//变量与引用具有相同的地址——规则(1) 11 int &ra = r;//可对引用再次引用,表示a变量有两个别名,分别是r和ra——规则(3) 12 13 return 0; 14 }