• C++ 函数 参数传递方式


    用函数调用所给出的实参(实际参数,actual arguments)向函数定义给出的形参(形式参数,formal arguments)设置初始值的过程,叫做参数传递(Argument Passing)。
    在C++中调用函数时有三种参数传递方式:
    (1)传值调用;
    (2)传址调用(传指针);
    (3)引用传递;
    总体上参数传递可分为两类,由形参的类别决定:值调用(call by value)和引用调用(call by reference)。

    这里传址调用被归为值调用,因为指针传递也是值传递,只不过值传递的是地址。

    一、值传递

    int main( )
    { 
        void swap(int,int);          //函数声明
        int i=3,j=5;
        swap(i,j);                 //调用函数swap
        return 0;
    }
    void swap(int a,int b)     //企图通过形参a和b的值互换,实现实参i和j的值互换
    { 
        int temp;
        temp=a;        //以下3行用来实现a和b的值互换
        a=b;
        b=temp;
    }

    在main()函数中调用swap(int a,int b)其中i和j值实际上并没有交换,如果想要交换只能使用指针传递或引用传递。
    void swap(int* pa,int* pb)
    void swap(int& ra,int& rb)

    用指针类型作为形参的值调用方式,可以通过参数返回修改后的值。

    void main( )
    { 
        void swap(int *,int *);
        int i=3,j=5;
        swap(&i,&j);             //实参是变量的地址
    }
    void swap(int *p1,int *p2)          //形参是指针变量
    { 
        int temp;
        temp=*p1;                //以下3行用来实现i和j的值互换
        *p1=*p2;
        *p2=temp;
    }

    二、引用传递

    按引用传递,引用实参的引用参数传递给函数,而不是进行参数拷贝。引用类型的形参与相应的实参占用相同的内存空间,改变引用类型形参的值,相应实参的值也会随着变化。

    int main( )
    { 
        void swap(int &,int &);
        int i=3,j=5;
        swap(i,j);
        return 0;
    }
    void swap(int &a,int &b)     //形参是引用类型
    { 
        int temp;
        temp=a;
        a=b;
        b=temp;
    }
  • 相关阅读:
    Linux-文件目录管理
    20. 有效的括号
    242. 有效的字母异位词
    387. 字符串中的第一个唯一字符
    136. 只出现一次的数字
    14. 最长公共前缀
    268. 丢失的数字
    169. 多数元素
    26. 删除有序数组中的重复项
    283. 移动零
  • 原文地址:https://www.cnblogs.com/wkfvawl/p/10539084.html
Copyright © 2020-2023  润新知