深入理解数据结构中函数参数的传递:按值传递,按引用传递

最近在看数据结构的书,刚刚入门看的有点吃力,对其中各种操作的函数参数传递参数的方式一头雾水(学c的时候感觉参数传递理解的还行),看各种博客上的算法实现传递的参数一会SqList &L,一会SqList L,一会SqList *L。但是很少博主对其作特别说明。我这种入门级选手看的十分痛苦。如是决定好好研究一下函数参数传递的方式。

c语言中函数参数传递有两种:按值传递和按地址传递。按值传递(如void change(int a,intb))时函数形参的改变不会作用于实参上面,也就是说我们在调用的函数中该变量形参的值,但是在函数外部对应得实参的值是不会改变的。而按地址传递(如void change(int a,int b)),我们在函数内部改变形参的值会引起实参的改变,因为此时我们传进来的地址(改地址所指向的才是我们参数的实际值),而地址该变了必然会使其指向不同的值,所以实际值也会改变。

void main(){
  int m=2,n=4;  void change1(int a,int b){    int temp=a;       a=b;       b=temp;  }   void  change2(int *a,int *b){    int *temp;    tem=a;    a=b;    b=temp;  }   change1(m,n);  change2(&m,&n);
}

结果十分明显,留给大家自己运行看看。另外还有一种SqList &L这又是什么呢?这是c++才有的叫按引用传递参数。他的代码写法跟change1类似,只是在change1的形参上面加上&而已,但其效果是可以改变a,b值交换的。这种写法只有c++才能c这样写是不合法的。
原文链接: https://www.cnblogs.com/wenyi1992/p/5880334.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/240657

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 下午8:57
下一篇 2023年2月13日 下午8:58

相关推荐