如果函数要使用参数,则必须声明接受参数值的变量,这些变量称为函数的形式参数
形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁
当调用函数时,有三种向函数传递参数的方式
传值调用
该方法把参数的实际值复制给函数的形式参数,在这种情况下,修改函数的形式参数对实际参数没有影响
默认情况下,c++使用传值调用方法来传递参数,一般来说,这意味着函数内的代码不会改变用于调用函数的实际参数,函数swap()定义如下:
void swap(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
虽然在函数内改变了xy的值,但是实际上xy的值并没有变化
指针调用
该方法把参数的地址复制给形式参数,在函数内,该地址用于访问调用中要用到的实际参数,这意味着,修改形式参数会影响到实际参数
按指针传递值,参数指针被传递给函数,就像传递其他值给函数一样,因此相应的,在下面的函数swap()中,用户需要声明函数参数为指针类型,该函数用于交换参数所指向的两个整数变量的值
void swap (int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
return ;
}
引用调用
该方法把参数的地址复制给形式参数,在函数内,该引用用于访问调用中要用到的实际参数,这意味着,修改形式参数会影响实际参数
按引用传递值,参数引用被传递给函数,就像传递其他值给函数用于,因此相应的,在swap()中,用户需要声明函数参数为引用类型,该函数用于交换参数所指向的两个整数变量的值
void swap (int &x,int &y)
{
int temo;
temp=x;
x=y;
y=temp;
return;
}
现在,通过引用传值来调用函数swap()
#include <iostream>
using namespace std;
void swap (int &x,int &y)
int main ()
{
int a=100;
int b=200;
cout<<"交换前a,b="<<a<<","<<b<<endl;
swap (a,b);
cout<<"交换后a,b="<<a<<","<<b<<endl;
return 0;
}
显示结果
交换前a,b=100,200
交换后a,b=200,100