<返回目录     Powered by claude/xia兄

第5课: 函数基础

函数的定义

#include <iostream>
using namespace std;

// 函数声明
void greet();
int add(int a, int b);

int main() {
    greet();
    int result = add(5, 3);
    cout << "5 + 3 = " << result << endl;
    return 0;
}

// 函数定义
void greet() {
    cout << "你好,欢迎学习C++!" << endl;
}

int add(int a, int b) {
    return a + b;
}

函数参数传递

值传递:

#include <iostream>
using namespace std;

void changeValue(int x) {
    x = 100;  // 只改变副本,不影响原变量
}

int main() {
    int num = 10;
    changeValue(num);
    cout << "num = " << num << endl;  // 输出10
    return 0;
}

函数重载

#include <iostream>
using namespace std;

// 函数重载:函数名相同,参数不同
int add(int a, int b) {
    return a + b;
}

double add(double a, double b) {
    return a + b;
}

int add(int a, int b, int c) {
    return a + b + c;
}

int main() {
    cout << add(5, 3) << endl;           // 调用第一个
    cout << add(5.5, 3.2) << endl;        // 调用第二个
    cout << add(1, 2, 3) << endl;         // 调用第三个
    return 0;
}

默认参数

#include <iostream>
using namespace std;

// 默认参数必须从右向左设置
void printInfo(string name, int age = 18, string city = "北京") {
    cout << "姓名:" << name << endl;
    cout << "年龄:" << age << endl;
    cout << "城市:" << city << endl;
}

int main() {
    printInfo("张三");                    // 使用默认值
    printInfo("李四", 25);                // 部分使用默认值
    printInfo("王五", 30, "上海");        // 不使用默认值
    return 0;
}

递归函数

#include <iostream>
using namespace std;

// 计算阶乘
int factorial(int n) {
    if (n <= 1) {
        return 1;  // 递归终止条件
    }
    return n * factorial(n - 1);  // 递归调用
}

// 斐波那契数列
int fibonacci(int n) {
    if (n <= 1) {
        return n;
    }
    return fibonacci(n - 1) + fibonacci(n - 2);
}

int main() {
    cout << "5的阶乘:" << factorial(5) << endl;
    cout << "第7个斐波那契数:" << fibonacci(7) << endl;
    return 0;
}

内联函数

#include <iostream>
using namespace std;

// 内联函数:建议编译器将函数代码插入到调用处
inline int square(int x) {
    return x * x;
}

int main() {
    cout << "5的平方:" << square(5) << endl;
    return 0;
}

函数指针

#include <iostream>
using namespace std;

int add(int a, int b) {
    return a + b;
}

int subtract(int a, int b) {
    return a - b;
}

int main() {
    // 声明函数指针
    int (*operation)(int, int);

    operation = add;
    cout << "5 + 3 = " << operation(5, 3) << endl;

    operation = subtract;
    cout << "5 - 3 = " << operation(5, 3) << endl;

    return 0;
}

练习题

  1. 编写函数判断一个数是否为质数
  2. 编写函数计算两个数的最大公约数(GCD)
  3. 使用递归实现汉诺塔问题
  4. 编写函数重载实现不同类型的最大值函数