zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    GO 函数的参数
    GO 函数
    GO 指针
    GO 结构体
    GO 接口
    码云git常用命令
    GO Map的初步使用
    GO Slice
    GO 数组
    GO 键盘输入和打印输出
  • 原文地址:https://www.cnblogs.com/wkfvawl/p/10539084.html
Copyright © 2011-2022 走看看