一.引用
基本概念
利用引用并不会定义一个新的变量,而是为一个已经存在的变量起别名,引用是不具备实际的内存空间的,而是和它引用的变量共用同一块内存空间。
定义引用时,必须进行初始化,即为其赋予一个目标变量,使其成为目标变量的别名。 注意:一旦一个引用被定义了,那么便不可再次更改它的目标变量。
一个已经存在的变量可以同时具有多个别名,即可以被多个变量名引用。
引用在函数中的作用:
我们知道,当为函数传参时,实际上定义了新的变量,这个新变量只在函数中作用,如果在函数中修改该参数的值,那么实际上传递的参数并不会被修改。举个例子
但是利用引用传递参数,在传参过程中实际执行了int& x = a;
此时再对x进行修改,本质上是对a进行了修改

二.指针
基本概念:
指针本质上是一个变量,也具备自己的内存空间(64位系统中占8个字节,32位占4个)
指针无论指向什么类型的变量,本质上都存放的是一个地址(整数类型) , 即在定义指针时,变量类型只是指明它指向什么类型的元素,如int* ptr = &a,指的就是ptr指向的是一个int类型的变量,即ptr存放的实际上是a这个int型变量的存储地址
使用方法
指针相当于一个指路牌,通过指针可以直接访问它存储的地址内的元素,可以通过*直接访问该地址,并访问或修改该地址存放的元素
注意
指针的自加与引用的自加不同,指针的自加是在本身存储的地址之上 加上一个 该数据类型所占的字节数,如一个指针指向了int型变量,那么当指针自加时会从当前地址+4个字节数; 而引用的自加是它的引用实体本身自加。
指针具有多级指针,即一个指针可以指向另一个指针,即二级指针,三级指针等…
引用不具备多级引用
指针变量可以为空指针nullptr
但引用不能为空,必须在定义引用时进行初始化
本文详细解释了引用和指针的基本概念,包括它们的区别(如引用不占独立内存、可变目标与不可变目标,以及指针有自己的内存空间和地址操作),并通过实例说明了它们在函数参数传递中的作用。同时强调了指针的多级特性以及指针与引用的不同之处(如自加操作)。
2852

被折叠的 条评论
为什么被折叠?



