#include<iostream>
using namespace std;
/*
变量名,本身是一段内存的引用,即别名。此处引入的引用,是为已有变量起一个别名
*/
int main()
{
/*
* int a=100;
*这是a是个变量名,实质是一段内存空间的别名,
*这个就是出生的时候给它的。日后我们还可以给它取个别名,如下
*int& b=a;这就建立了一种引用关系。这个时候,我们就叫b是a的别名。
*b是a的引用。那引用和a之间有什么关系
*1.引用是一种声明关系,声明的时候必须初始化。你 int& b;是不可以的。
*引用不开辟空间。这个b是不占空间的。仅仅是一段声明的。
*此种声明关系,一经声明,不可变更。
*注意 这里说的是不能声明,而不是不能赋值
*如下:int a=100; int& b=a; int c=200; b=c;是可以的,因为b=c这里指
*的是赋值,不是声明。如果你在int &b=c;这才是声明。
*可以对引用再次引用,多次引用的结果就是多个引用指向同一个地址
*但是&这个也是个取地址符,你怎么区分什么时候是引用,什么时候是
*引用呢???。这里其实就是运算符重载。&符号前面有数据类型的时候
*是引用,其余的都是取地址。比如 int& 就是引用。int *p=&a就是取地址。
*但是你不能对引用进行取地址。
*/
int a=100;
int& b=a;
/*可以定义指针的引用,但是不能定义引用的引用。
* 如下:
* int a=100;int *b=&a;int *&c=b;是可以的,这里C就是对b的引用
* 这里b是一个指针,所以这是定义指针的引用。
* 这里需要 int* &d=c;
*/
/*
* 可以定义指针的数组,但是不能定义引用数组,可以定义数组引用
* 定义一个数组 int a[]={1,2,3,4,5};
* 怎么引用数组,数组名本身是个地址,但是我们不能int * &p=a;
* 因为你a现在只是一个指针,是不能完全表达一个数组的。
* 这个a的类型实际上是int[5]这个类型,所以我们引用应该是这样的
* int(&p)[5]=a;
*/
return 0;
}
C++学习day4之引用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.