标签:oid 行操作 关于 形参和实参 class pre 参数传递 上进 数据结构
今天在学习数据结构的时候,出现了这样一段算法结构:
1 void swap(int &p1,int &p2) 2 { 3 int p; 4 p=p1; 5 p1=p2; 6 p2=p; 7 }
这段算法,可以实现swap(a,b)两个实参的交换。于是百思不得其解,int &p1到底是什么类型?
课本上介绍了,这种类型在C++中为引用类型,查阅资料可知,引用是某一变量的别名,对引用的操作实际上和对变量的操作是一样的。引用本身不占存储单元,它并不是新定义的一个变量。所以说,对引用求地址,就是对目标变量求地址,目标变量和它的引用实际上是共享一块存储空间的。在数据结构的书上介绍说,传引用的方式是双向的值传递,实参的值传给形参,在函数调用之后,形参的值回传给实参,形参和实参的值同步发生改变。返回本例,在(int &p1,int &p2)之后,实质上进行了int &p1=a;int &p2=b;这样的操作,意思就是p1为a的引用,p2为b的引用,所以在函数中对p1,p2进行操作,就是对引用的操作,实质上就是对实参a,b的操作,所以最终得以swap函数的实现。
而对比如下算法,
1 void swap(int x,int y) 2 { 3 int p; 4 p=x; 5 x=y; 6 y=p; 7 }
在函数调用的时候,在内存中为形参x,y分配了存储空间,而在调用结束的时候,形参的内存被释放,所以不能实现交换。
今天所说的只是引用作为参数传递的一种作用。在C++中还有其他的作用,等以后有学习C++的时候再做探讨吧!
柳暗花明又一村。让我纠结了半天的问题,终于得以解决,快哉快哉!通过今天的学习,我初步了解了C++语言的魅力所在。以后如果有时间,我会考虑学习C++的,扩展自己的知识。
标签:oid 行操作 关于 形参和实参 class pre 参数传递 上进 数据结构
原文地址:https://www.cnblogs.com/Sycblog/p/12333873.html