• c++参数传递的三种方式


    一般来说C++中参数传递有三种方式:值传递、指针传递、引用传递

    1.值传递——传值

    值传递是最常见的一种参数传递的方式,但是对初学者来说也最容易出错。如下例:

    1. #include<iostream.h>  
    2. void fun(int a,int b)  
    3. {  
    4.     int temp;  
    5.     temp=a;  
    6.     a=b;  
    7.     b=temp;  
    8. }  
    9. void main()  
    10. {  
    11.     int m,n;  
    12.     m=1;  
    13.     n=2;  
    14.     fun(m,n);  
    15.     cout<<m<<""<<n<<endl;       //输出结果为 12  
    16. }  

    例子中fun()函数采用值传递的方式,传入的实参实际上是m、n的副本而非其本身,所以对副本的改变并不会反映到m、n本身上。

    2.指针传递——传指针

    使用指针传递需要先了解一下指针的有关概念,因为这里主要介绍关于参数的部分,所以废话不多说了,直接看例子:

    1. #include<iostream.h>  
    2. void fun(int * x)  
    3. {  
    4.     *x+=10;  
    5. }  
    6. void main()  
    7. {  
    8.     int n=0;  
    9.     fun(&n);  
    10.     cout<<n<<endl;      //输出结果为 10  
    11. }  

    fun()函数体内的x是指向外部变量n的指针,改变指针的内容将导致n的值得改变,所以n的值成为了10。

    3.引用传递——传引用

    引用相当于别名(绰号),比方说有人的名字是王小丽,她的绰号是“小小”。如果有人说“小小”几岁,实际上就是指王小丽几岁。

    1. #include <iostream.h>  
    2. void main()  
    3. {  
    4.     int x;  
    5.     int &y=x;   //变量引用  
    6.     y=99;  
    7.     cout<<"x="<<x<<endl;  //输出结果为 x=99  
    8. }  

    程序中&y=x应当理解为y具有x的地址,即x与y具有相同的地址,地址相同了当然内容也相同了,所以y的值是99。
    比较:

           对比参数的三种传递方式,可以发现“引用传递”和“指针传递”的性质一样,而书写方式像“值传递”。引用传递可以做的任何事指针也能够做到,因为指针能够毫无约束地操作内存中的东西,这种强大的功能背后也必将隐藏着巨大的危险,所以慎用指针。

    剑指offer上判断平衡二叉树用的就是指针传递

  • 相关阅读:
    【C/C++】qsort函数的使用方法和细节
    MOOC C++笔记(五):继承
    MOOC 数据库系统笔记(二):数据库系统的基本结构及其演变发展
    PTA A1015
    MOOC 数据库系统笔记(一):初步认识数据库系统
    PTA A1014
    MOOC C++笔记(四):运算符重载
    PTA A1013
    PTA A1011&A1012
    1.1.22 同样的文档,行数不一样
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/6854286.html
Copyright © 2020-2023  润新知