C++之函数

在C++中,函数是程序的基本构建块,用于执行特定任务。通过合理地组织和使用函数,可以使代码更加模块化、可读性和可维护性更强。下面是关于C++函数的一些关键概念和特性:

函数定义和调用

定义

函数定义指定了函数的名称、返回类型、参数列表以及函数体。函数体包含了实现函数功能的具体代码。

复制代码
return_type function_name(parameter_list) {
    // 函数体
}

例如:

复制代码
int add(int a, int b) {
    return a + b;
}
调用

函数调用则是执行函数的过程,通常发生在主函数或其他函数中,通过传递必要的参数来调用。

复制代码
int result = add(5, 3); // 调用 add 函数

函数声明和定义

声明

函数声明告诉编译器函数的存在及其如何调用,但不会提供具体的实现细节。声明通常出现在头文件中。

复制代码
return_type function_name(parameter_list);

例如:

复制代码
int add(int, int); // 函数声明
定义

函数定义提供了函数的实际实现,通常位于源文件中。

复制代码
int add(int a, int b) { // 函数定义
    return a + b;
}

参数传递

传值

当参数按值传递时,函数接收的是实际参数的一个副本。因此,对参数所做的任何更改都不会影响原始变量。

复制代码
void modifyValue(int x) {
    x = 10; // 这只修改了副本
}
传引用

当参数按引用传递时,函数接收到的是实际参数的直接引用。这意味着对参数所做的任何更改都会影响原始变量。

复制代码
void modifyReference(int &x) {
    x = 10; // 修改的是原变量
}
默认参数

可以在函数声明中为参数指定默认值。如果调用时未提供该参数,则使用默认值。

复制代码
void printMessage(std::string message, std::string prefix = "Info: ") {
    std::cout << prefix << message << std::endl;
}

函数重载

函数重载是指在同一作用域中可以有多个同名函数,只要它们的参数列表不同(参数个数、类型或顺序不同)。编译器会根据调用时提供的参数自动选择正确的函数版本。

复制代码
void display(int num);
void display(double num);
void display(const char* str);

内联函数

内联函数是一种优化手段,指示编译器尝试将函数调用替换为函数体本身,以减少调用开销。这通常适用于小型函数。

复制代码
inline int square(int x) {
    return x * x;
}

递归函数

递归函数是指在其函数体内直接或间接调用自身的函数。递归通常用于解决可以通过分解成相似子问题来求解的问题。

复制代码
int factorial(int n) {
    if (n == 0) return 1; // 基本情况
    return n * factorial(n - 1); // 递归调用
}

这些就是C++中关于函数的一些基本概念和高级特性。理解和熟练运用这些特性可以帮助编写高效且易于管理的代码。

相关推荐
qq_4017004121 分钟前
Qt Modbus 源码剖析:从 QModbusClient 到工业级通信框架
开发语言·qt·系统架构
星夜离尘5623 分钟前
MATLAB 角度解缠遇到丢样:先分段,再说明圈数为什么不可恢复
开发语言·matlab
我命由我1234531 分钟前
6-2.Python 异常处理 - 异常捕获(捕获指定异常、常见异常类型、异常信息)
java·运维·开发语言·python·http·https·java-ee
ZoeLandia34 分钟前
React08:自定义 Hook
开发语言·前端·react.js·typescript
C++ 老炮儿的技术栈1 小时前
机器人的坐标,像 XYZ 的坐标值,是用单精度浮点还是用双精度浮点?
c语言·c++·人工智能·单片机·c
zaizai10071 小时前
STL深度剖析2
java·c++·算法
染指11101 小时前
157.Agent-LangGraph-工具(实现ReAct Agent模式)
开发语言·人工智能·python·langchain·agents
幻智星科技1 小时前
FPGA纯硬件UDP桥接:微秒级响应新范式
c++·fpga开发·硬件架构
程序猿乐锅1 小时前
【从0-1学习Python | 第九篇】继承
开发语言·后端·python·学习·fastapi
青少儿编程课堂1 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:位运算实战——二进制权限与最大异或解析
c++·python·算法·bfs·信息学竞赛