C++函数讲解

函数

前言

​ 函数时程序的基本组成单元,用于执行特定的任务或计算。函数的声明和定义时两个不同的概念,通常遵循特定的语法。在接下来将会对函数进行一个系统的讲解。

函数声明和定义

语法格式:

返回类型 函数名称(参数列表);

这个是函数声明,仅仅告诉我们函数的返回类型、名称、参数列表等等。

函数声明告诉编译器函数的名称、返回类型和参数类型;定义包括函数体。声明通常在头文件中,定义通常在源文件中。

示例:

//函数声明,放在.h类型文件中
int add(int a, int b);
//函数定义,放在.cpp类型文件中
int add(int a, int b){
    return a + b;
}

返回类型

​ 函数的返回类型可以是任何的数据类型,包括基本类型、指针、引用、类类型或void(无返回值)类型。

//示例
int getValue(){
    return 42;
}

void printMessage(){
    std::cout << "Hello, World!" << std::endl;
}

参数传递

​ 参数可以按照值、引用或指针进行传递。

//按照值进行传递
void display(int x) {
    std::cout << x << std::endl;
}


//按照引用进行传递
void increment(int &x) {
    x++;
}


//按照指针进行传递
void reset(int *x) {
    *x = 0;
}

函数重载

​ 允许定义多个同名函数,但是参数列表必须不同。

void print(int i) {
    std::cout << "Integer: " << i << std::endl;
}

void print(double d) {
    std::cout << "Double: " << d << std::endl;
}

这个在使用的时候,根据传入的值的类型不同进行函数的确定。

默认参数

​ 为参数提供默认值,调用时可以省略这些参数。

void display(int a, int b = 10) {
    std::cout << "a: " << a << ", b: " << b << std::endl;
}

注意事项:

  • 赋值顺序
  • 传入参数时顺序

内联函数

​ 使用inline关键字进行定义,提示编译器将函数代码嵌入到调用点。

inline int square(int x) {
    return x * x;
}

递归

​ 函数调用自身来解决问题。

int factorial(int n) {
    if (n <= 1) return 1;
    else return n * factorial(n - 1);
}

函数指针

​ 函数指针保存函数的地址,可以用于回调函数或动态调用。

int (*funcPtr)(int, int) = add;
int result = funcPtr(3, 4);

Lambda表达式

​ C++11引入的匿名函数,用于简化代码。

auto add = [](int a, int b) { return a + b; };
std::cout << add(3, 4) << std::endl;

模板函数

​ 允许函数接收任意类型的参数。

template<typename T>
T add(T a, T b) {
    return a + b;
}

命名空间

​ 用于避免命名冲突,将函数组织到命名空间中。

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

int main() {
    int result = Math::add(3, 4);
    std::cout << "Result: " << result << std::endl;
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值