C++函数参数的传递方式(值传递、址传递、引用传递、const在传递函数参数时的作用)

       

目录

1、值传递

2、址传递

3、引用传递

 引用的用法

4、const在函数参数传递中的作用


在编程语言的学习过程中,函数的学习是不可避免的。函数可以帮助我们更清晰的实现某一个具体的功能,实现模块化编程。而在函数中,参数无疑是最重要的。选择正确的参数传递形式,可以更好地帮助我们实现函数的功能。

1、值传递

        使用子函数时,将主函数实参的值传递给形参,在子函数中完成相应操作。但此时,子函数中的所有操作都是针对于形参来进行的,相当于将实参的值复制一份给形参,此时修改复印件(形参)对原件(实参)无影响。

//示例:交换两数的值
#include<iostream>
using namespace std;

void fun(int a, int b) {
    int t;
    t = a;
    a = b;
    b = t;
    cout << "a = "<< a << ' ' << "b = " << b;
}

int main() {
    int a = 10, b = 20;
    fun(10, 20);
    return 0;
}

//但是如果将输出放到主函数,则无法实现该操作,因为子函数的所有操作对形参进行的不会影响
//实参,想要解决这一情况,则需要使用址传递

2、址传递

        调用子函数时,把主函数的地址传入给子函数形参,这时子函数是对实参的地址所指向的内存空间进行操作的,因此可以改变实参的值

#include<iostream>
using namespace std;

void fun(int *a, int *b) {
    int t= *a;
    *a = *b;
    *b = t;
}

int main() {
    int a = 10, b = 20;
    fun(&a, &b);
    cout << "a = " << a << ' ' << "b = " << b;
    return 0;
}

3、引用传递

        当引用作为函数参数时,相当于把实参(原值)所指向的内存起一个别名(形参),因此,函数的形参和实参都指向同一内存。所以对形参操作也能达到修改实参的目的

#include<iostream>
using namespace std;
void fun(int& a, int& b) {
    int t= a;
    a = b;
    b = t;
}

int main() {
    int a = 10, b = 20;
    fun(a, b);
    cout << "a = " << a << ' ' << "b = " << b;
    return 0;
}

        只知道引用传递,而不知道引用怎么使用是不行的下面让我介绍一下引用的用法

 引用的用法

  • 引用的作用:给变量起别名
  • 引用的注意事项:引用必须初始化,并且不能初始化为空;引用指向不能修改(因为引用的底层是指针常量)
  • 引用的语法:数据类型& 别名 = 原名
  • 引用传递相较于址传递的优点:
    • 可读性更高
    • 代码看起来更加简洁

4、const在函数参数传递中的作用

        在C/C++中,const关键字的作用是定义常量,如果用他来修饰函数参数,可以防止函数内部对于对该参数进行修改

#include<iostream>
using namespace std;

void fun(const int a) {
	a += 10; //此时会报错,因为const修饰的参数不能被修改
}

int main() {
	int a = 10;
	fun(a);
}

         并且const还可以提升代码的可阅读性,通过使用const关键字,可以明确的向调用者表示该参数是不可修改的,从而提升代码的可读性。综上,在函数参数中使用const可以更安全;提高代码的可读性等好处

        本文到这里就结束了,希望可以对你的C++学习有帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值