zoukankan      html  css  js  c++  java
  • 深入理解数据结构中函数参数的传递:按值传递,按引用传递

     

      最近在看数据结构的书,刚刚入门看的有点吃力,对其中各种操作的函数参数传递参数的方式一头雾水(学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

  • 相关阅读:
    FirewallD 详解
    EventBus源码解析
    详谈 Jquery Ajax 异步处理Json数据.
    jQuery Ajax异步处理Json数据详解
    7款jQuery图片轮播滑动插件
    分享15款为jQuery Mobile定制的插件
    在springmvc中解决FastJson循环引用的问题
    SpringMVC与fastjson整合并同时解决中文乱码问题
    SpringMVC处理ajax请求
    spring mvc 返回json的配置
  • 原文地址:https://www.cnblogs.com/hahahakc/p/14270930.html
Copyright © 2011-2022 走看看