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