📜  C++ 函数(1)

📅  最后修改于: 2023-12-03 14:59:48.691000             🧑  作者: Mango

C++ 函数

在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

需要注意的是,函数递归的过程会占用栈空间,如果递归层数过多,可能会导致栈溢出的问题。