c++中参数传递的具体使用方法

概念:

函数的 参数传递 指的是形参与实参结合的过程,其基本方式包括值传递引用传递两种。

理解形参和实参:

在定义函数时,参数是没有实际值的,只起一个占位作用,所以称为形式参数,简称 "形参";在调用函数时,参数必须有一个确定的值,是真正能对结果起作用的因素,所以称为实际参数,简称 "实参"。

值传递:

该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数对实际参数没有影响。例如新建 swapxy.cpp,输入:

#include<iostream>
using namespace std;

void swap(int a,int b){ //定义空函数 swap,用于交换 a 和 b 的值。
    int t=a; //定义中间变量 t,并将 a 的值赋给变量 t。
    a=b; //将 b 的值赋给 a。
    b=t; //将 t 的值赋给 b,又因为 t=a,所以把 a 的值赋给 b。
}

int main(){
    int x=3;
    int y=4;
    cout<<"x="<<x<<","<<"y="<<y<<endl; //输出 x、y。
    swap(x,y); // 调用 swap 函数。
    cout<<"x="<<x<<","<<"y="<<y<<endl; //输出调用函数后 x、y 的值。
}

调用已经定义好的函数 swap,但函数调用时传递的是实参的值,即单向传递过程,此时改变形参的值对实参无任何影响。

程序结果:

引用传递:

使用引用传递,需要在定义函数时,在参数前加上符号 &该方法把参数的引用复制给形式参数,修改形式参数会影响实际参数。例如修改 swapxy.cpp 文件为以下内容:

#include<iostream>
using namespace std;

void swap(int &a,int &b){ //定义空函数 swap,用于交换 a 和 b 的值。
    int t=a; //定义中间变量 t,并将 a 的值赋给变量 t。
    a=b; //将 b 的值赋给 a。
    b=t; //将 t 的值赋给 b,又因为 t=a,所以把 a 的值赋给 b。
}

int main(){
    int x=3;
    int y=4;
    cout<<"x="<<x<<","<<"y="<<y<<endl; //输出 x、y。
    swap(x,y); // 调用 swap 函数。
    cout<<"x="<<x<<","<<"y="<<y<<endl; //输出调用函数后 x 和 y 的值。
}

函数 swap 的形参属于引用类型,所以修改形参将影响实参。

程序运行结果:

拓展(默认参数):

在 C++ 中,函数可定义具有默认值的参数,即 默认参数。当调用函数时,如果用户指定了参数值,则使用用户指定的值;如果参数值缺省,则使用默认参数。例如新建 defaultcs.cpp,输入:

#include<iostream>
using namespace std;

int add(int a,int b = 5){//变量 b 的值默认为 5。
    return a + b;
}

int main()
{
    int a,b;
    cout<<"input a b:"<<endl;
    cin>>a>>b;
    cout<<"a + b(default) = "<<add(a)<<endl; //此时调用的 add 函数将 b 的值缺省,使之为默认参数。
    cout<<"a + b = "<<add(a,b)<<endl;
    return 0;
}

add(a) 的返回结果为:输入的 a 值与默认 b 值之和。

add(a,b) 的返回结果为:输入的 a 值与输入的 b 值之和。

程序结果为:

函数重载:

函数重载 指定义一个参数类型参数个数不同重名函数。当程序执行时,编译器将调用参数类型与函数形参类型一致的函数。例如新建 renamehs.cpp,输入:

#include<iostream>
using namespace std;

int add(int a,int b){ //定义整型函数 add。
    int c;
    c = a - b;
    return c;
}

double add(double a,double b){ //定义双精度型函数 add。
    double c;
    c = a + b;
    return c;
}

int main()
{//函数重载。
    cout<<"a + b = "<<add(3,4)<<endl;//调用整型函数 add。
    cout<<"a + b = "<<add(3.111,4.222)<<endl;//调用双精度型函数 add。
}

执行 add(3,4) 时,调用 int add(int a,int b) 函数。

执行 add(3.111,4.222) 时,调用 double add(double a,double b) 函数。

程序结果:

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值