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;
}

猜你喜欢

转载自www.cnblogs.com/wkfvawl/p/10539084.html