医院网站建设情况汇报,邯郸市口碑网络技术有限公司,做优化网站是什么意思,江门网站建设哪家好【c】浅讲引用 前言引用定义作用做输出型参数引用作返回值总结 关于引用的权限 结尾 前言 博主开始细学c和linux了 这次就带来浅学了的引用。 引用
定义
引用不是在内存中开辟一个新空间的新变量 类似于给变量取别名#xff0c;和取别名的对象在空间中公用一个对象 例#… 【c】浅讲引用 前言引用定义作用做输出型参数引用作返回值总结 关于引用的权限 结尾 前言 博主开始细学c和linux了 这次就带来浅学了的引用。 引用
定义
引用不是在内存中开辟一个新空间的新变量 类似于给变量取别名和取别名的对象在空间中公用一个对象 例
int a0; int ba 这里创建了一个变量a 同时创建了一个a的引用b 此时a和b都指向的同一块空间就是说a和b的改变都会改变对方
使用注意事项 1.同时一个变量可以有多个引用就像一个人可以有多个别名 2.创建别名后必须要进行初始化指明是谁的别名
作用
做输出型参数
这个讲的可能有点抽象说具体点的作用呢就是 可以通过传形参来改变实参类似于指针 例
Void swap(int a,int b)//形参是实参的别名
//所以可以改变实参
{
int tmpa;
ab;
btmp;
}这里将形参中传了引用代表形参传入的是实参的一个引用。 传入的是和实参代表同一块内存空间的引用 所以这里a和b的改变可以改变实参。
引用作返回值
一般来说我们使用函数返回时 是直接使用 return 函数来进行的 例
int count()
{int n0;return n;
}
int main()
{int tmpcount();
}这个tmp在接受return n时不是直接传参的因为临时变量所在的栈帧要进行销毁 在进行销毁时会将需要return的值存入一个临时变量中 然后赋值给tmp
但是当我们使用引用返回时就可以跳过这个步骤
int count()
{int n0;n;return n;
}
这里的int 代表了返回的值时一个引用值。 但是这样真的对吗 仔细看看我们这里return n就是指返回了n的引用值 当函数栈帧被销毁时内存使用权返回给系统 返回的引用值指向的是n这个内存空间但是此时n这个空间已经被销毁了 所以可能会产生随机值的情况
这里我们应该怎么解决呢 既然n会被函数销毁那我们让n不被销毁不就行了
int count()
{Static Int n0;n;return n;
}
这样加了个const。 就让n存储在了静态区中不会被销毁
总结 1任何场景都能用引用传参 2引用做返回值谨慎使用当返回的引用指向对象的值存在时可以用引用不存在则不用 关于引用的权限
引用过程中权限不能放大只能缩小和平移 例 Const int a0; Int ba; 这里权限放大a自己都不能改变自己 而将a的引用赋值给b后b就可以改变a 这显然是不合理的所以不可用
Int a0; Contest int ba; 这里权限缩小本来a可以被改变而引用b权限缩小 选择不进行对a改变 所以合理 Int a0; Int ba 这里权限平移完全ok
结尾
这里只是浅浅讲了一个c的引用功能 因为c刚开始学这种对c的小优化太多了 如果不进行记录就容易忘记。