c++指针(六)——指针与引用

(1)、引用的定义

int a=1;
int &b=a;//同样有没有空格都可以,没有固定的格式要求

首先我们要明白的一点就是,对于定义一个变量来讲,等号右边的内容要赋值给等号左边的 变量

所以等号右边的内容要和等号左边的变量具有相同的类型,

其实仅此条件就可以进行赋值操作,而与左边添加的各种符号如 * 和 & 等无关


然而,为什么还要加 * 和 & 这些符号呢?

这是为了限制想要定义的变量的类型呀,* 后面接的变量是指针变量,所以看到 * 号,我们就知道这是想要为后边的 p 定义一个指针变量,我们就把一个指针变量赋值给它好了~~~

同理, 看到 & 号,我们知道这是想要为后边的 b 定义一个int 类型的变量,所以我们就把 a 赋值给 b 好了,那么此时 b 的值就是1啦~~~~

引用变量是一个 int 型或者是 char 型变量,不能将 int *或者是 char * 型变量赋值给引用型变量

int array[5]={1,2,3,4,5};
int &b=array;//出错,不能将int *型赋值给引用变量
int &b=*array;//正确

(b 的实质是 int 型变量,只是表面上它在 & 的后边,我们就叫它引用变量了,就像 * 号后边的变量叫指针变量一样 )

(b 的实质是 int 型变量,只是它是特殊的 int 型变量,特殊在定义它的时候内存的分配上)


(2)、内存的分配

那 int b =a; 和 int &b=a; 有什么区别呢,看起来这两条语句都使得 b 的值变为了1

区别在于内存分配上

int b=a; 这条语句先为变量 b 开辟了一个int 大小的空间,然后将 a 的值也就是 1 放进这个内存空间中

int &b=a; 这条语句没有为 b 开辟空间,只是又给原来那个叫 a 的内存空间添加了一个名字,叫 b ,这个空间既叫a 又叫 b 

比如你先有了大名,后来爸妈又给起了小名,这两个名字指的都是 你 对吧~~~

这一系列文章就讲完啦,希望指正文章中存在的各种问题

有问题欢迎留言,或者联系[email protected]~~~~~~


猜你喜欢

转载自blog.csdn.net/qq_32103261/article/details/80231698