亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

掌握 C++ 函数:从基础到进阶的完整实战指南

C++ 函数完全指南

系统掌握 C++ 函数核心:用户自定义函数、声明与定义、参数传递、返回值、函数原型、标准库函数,附实战示例与最佳实践。

函数是完成特定任务的自包含代码块。将复杂问题拆解为小函数,提升可读性、可维护性、可测试性。

C++ 函数两大类:

  1. 标准库函数:语言预定义(如 sqrt()、abs())
  2. 用户自定义函数:开发者编写封装业务逻辑

本文聚焦用户自定义函数。


用户自定义函数

函数声明语法

返回类型 函数名(参数1, 参数2, ...) {
    // 函数体
}

示例:void Greet() 打印问候。空参数列表表示无参。

void Greet() {
    cout << "Hello World";
}
注意:返回类型与参数详见后文。

调用函数

在需要处直接写函数名加括号:

int main() {
    Greet();
}
掌握 C++ 函数:从基础到进阶的完整实战指南

示例 1:显示文本

#include <iostream>
using namespace std;

void Greet() {
    cout << "Hello there!";
}

int main() {
    Greet();
    return 0;
}

输出

Hello there!

函数参数

参数是函数接收外部数据的占位符。

void PrintNum(int num) {
    cout << num;
}

调用时传入实参:

int main() {
    int n = 7;
    PrintNum(n);
    return 0;
}

示例 2:多参数函数

#include <iostream>
using namespace std;

void DisplayNum(int n1, float n2) {
    cout << "The int number is " << n1;
    cout << "The double number is " << n2;
}

int main() {
    int num1 = 5;
    double num2 = 5.5;
    DisplayNum(num1, num2);
    return 0;
}

输出

The int number is 5
The double number is 5.5

实参类型必须与形参匹配(或可隐式转换)。

掌握 C++ 函数:从基础到进阶的完整实战指南

返回值与 return 语句

函数可返回值:指定返回类型,用 return 送出结果。

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

调用并接收返回值:

int sum = Add(100, 78);
cout << "100 + 78 = " << sum << endl;

示例 3:两数求和

#include <iostream>
using namespace std;

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

int main() {
    int sum = Add(100, 78);
    cout << "100 + 78 = " << sum << endl;
    return 0;
}

输出

100 + 78 = 178

函数原型(前向声明)

函数定义在调用之后时,需在调用前提供原型告知编译器签名。

// 原型声明
void Add(int, int);

int main() {
    Add(5, 3);
    return 0;
}

// 定义在后
void Add(int a, int b) {
    cout << (a + b);
}

原型语法:

返回类型 函数名(参数类型1, 参数类型2, ...);

示例 4:使用原型

#include <iostream>
using namespace std;

int Add(int, int);  // 原型

int main() {
    int sum = Add(100, 78);
    cout << "100 + 78 = " << sum << endl;
    return 0;
}

int Add(int a, int b) {  // 定义
    return a + b;
}

输出

100 + 78 = 178

用户自定义函数的四大收益


标准库函数

C++ 标准库提供海量现成函数,简化常见任务。如 sqrt()、abs()、isdigit()。

使用需包含对应头文件。数学函数需 #include <cmath>。

示例 5:计算平方根

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double number = 25.0;
    double squareRoot = sqrt(number);
    cout << "Square root of " << number << " = " << squareRoot;
    return 0;
}

输出

Square root of 25 = 5

sqrt() 声明在 cmath,故必须包含该头文件。

深入参考:C++ 标准库头文件参考


现代 C++ 函数进阶特性(C++11/14/17/20)

特性版本核心价值
Lambda 表达式C++11就地定义匿名函数对象,配合 STL 算法极其强大
auto 返回类型推导C++14auto Add(auto a, auto b) { return a + b; }
泛型 LambdaC++14[](auto a, auto b) { return a + b; }
constexpr 函数C++11/14/20编译期计算,用于常量表达式上下文
折叠表达式C++17参数包展开:(args + ...)
概念约束模板函数C++20template<Integral T> T Add(T a, T b)
协程C++20co_await/co_yield 异步/生成器

函数设计最佳实践

  1. 单一职责:一个函数只做一件事,函数名动词短语表达意图(CalculateTax 而非 Process)
  2. 参数少而精:>3 个参数考虑封装为结构体/类
  3. 优先按值传递小型类型:int、double、小结构体按值传;大对象用 const T&
  4. 避免输出参数:用返回值(C++17 结构化绑定 auto [x, y] = GetPos();)或 std::optional/std::expected
  5. 标记 noexcept:不抛异常的函数标记 noexcept,启用优化
  6. 文档化契约:前置条件、后置条件、副作用、线程安全性

C语言

  1. Stratasys FDM打印优化必知:Insight软件10大核心功能
  2. 掌握 C++ 运算符:六大类型全解析与实战示例
  3. C++ 注释最佳实践:编写可读、可维护代码的注释艺术
  4. C++数组传递给函数实战指南
  5. C++ 友元函数与友元类:突破访问控制的利器
  6. C++ 运算符重载实战指南:语法、方法、限制与代码示例
  7. C 语言函数详解:定义、声明、调用与参数传递
  8. C++重载机制深度解析:函数重载与运算符重载全攻略
  9. C++多态实战指南:虚函数、动态绑定与纯虚函数
  10. 掌握Verilog函数:高效RTL设计的复用利器
  11. MATLAB 函数详解:定义、工作区、输入输出与多种函数类型
  12. 精通 Python Lambda 函数:实用示例与最佳实践