📅  最后修改于: 2023-12-03 14:59:48.691000             🧑  作者: Mango
在C++编程中,函数是常用的代码组织和复用机制。函数是一段完成特定任务的独立代码单元,可以在程序中多次调用。C++中的函数可以有参数和返回值,也可以是无参、无返回值的。
C++函数的定义包括函数头和函数体两部分。函数头给出函数名、参数列表和返回类型,函数体是函数执行的实现部分。
//无参无返回值函数定义
void functionName(){
//函数体
}
//带参数的函数定义
返回类型 functionName(参数类型 参数名){
//函数体
return 返回值;
}
C++函数的参数用于向函数传递数据。在函数定义时,可以指定参数的类型和名字。在函数调用时,需要提供与函数定义中参数类型和数量对应的实际参数值。
函数参数默认使用值传递方式传递。值传递是指把实参的值复制一份给形参,函数中使用的是形参的值,不会影响实参的值。
//值传递函数示例
#include<iostream>
using namespace std;
void changeValue(int x) { //值传递形参
x = 10; //修改形参的值
}
int main() {
int num = 1;
cout << "函数调用前num的值为:" << num << endl;
changeValue(num); //传递实参
cout << "函数调用后num的值为:" << num << endl;
return 0;
}
//输出结果为:
// 函数调用前num的值为:1
// 函数调用后num的值为:1
为了在函数中改变实参的值,可以使用引用传递方式。
//引用传递函数示例
#include<iostream>
using namespace std;
void changeValue(int &x) { //引用传递形参
x = 10; //修改实参的值
}
int main() {
int num = 1;
cout << "函数调用前num的值为:" << num << endl;
changeValue(num); //传递实参
cout << "函数调用后num的值为:" << num << endl;
return 0;
}
//输出结果为:
// 函数调用前num的值为:1
// 函数调用后num的值为:10
C++中允许定义同名函数,只要它们的参数个数或类型不同即可。这种多个同名函数的情况称为函数重载。
//函数重载示例
#include<iostream>
using namespace std;
void print(int num) {
cout << "输出整数:" << num << endl;
}
void print(double num) {
cout << "输出小数:" << num << endl;
}
int main() {
print(1); //调用print(int)函数
print(1.0); //调用print(double)函数
return 0;
}
//输出结果为:
// 输出整数:1
// 输出小数:1
在函数重载中,编译器通过参数个数和类型判断要调用的函数。因此,函数名相同、参数个数和类型相同但返回类型不同的函数不能同时存在。
函数递归指函数自己调用自己的过程。
//递归函数示例
#include<iostream>
using namespace std;
int sum(int num) {
if (num == 1) {
return 1;
} else {
return num + sum(num - 1); //函数调用自身
}
}
int main() {
int num = 10;
cout << "1到" << num << "的和为:" << sum(num) << endl;
return 0;
}
//输出结果为:
// 1到10的和为:55
需要注意的是,函数递归的过程会占用栈空间,如果递归层数过多,可能会导致栈溢出的问题。