OneCoder Avatar
OneCodercoderli.com · 937 篇博文
四级

C++ 算法考级专栏

真题分析、矩阵探测、递归回溯与基础语法

🎨 视觉封面

【GESP】C++四级考试大纲知识点梳理, (3) 模块化和函数

📅 2025-06-10·✍️ OneCoder·计算中...·⏱️ 10 分钟
#GESP#C++#考试大纲

GESP C++四级官方考试大纲中,共有11条考点,本文针对第3条考点进行分析介绍。

(3)理解模块化编程思想,掌握函数的声明、定义及调用,掌握形参与实参的概念及区别。 {: .prompt-info}

四级其他考点回顾:


一、模块化编程

1.1 概念理解

模块化编程是一种把大程序分成**若干小模块(模块 = 功能块)**的方法。每个模块负责一个特定功能,像拼图一样组合起来形成完整的程序。

📝 举个例子:

比如要写一个“点外卖”的程序:

  • 登录模块
  • 点餐模块
  • 支付模块
  • 评价模块

每一部分可以分别编写,最后组合起来。这种拆分让程序更清晰、更容易维护。

✅ 优点:

  • 清晰结构:每个部分功能明确;
  • 复用性强:写一次,可多次使用;
  • 易维护:出现问题时容易定位。

二、函数

2.1 函数的作用

函数是实现模块化编程最基本的方式。函数就是一段可重复使用的代码块,可以用来完成特定任务。

比如:

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

这个函数就可以帮助我们进行加法计算。


2.2 函数的声明(说明它长什么样)

CPP
int add(int a, int b); // 告诉编译器有这样一个函数

2.3 函数的定义(写清楚它是怎么工作的)

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

2.4 函数的调用(让它为我们工作)

CPP
int result = add(3, 4); // 调用 add 函数,让它帮我们算 3 + 4

三、形参与实参

3.1 名词解释

  • 形参(形式参数):函数中写在括号里的变量,用来接收外部传入的数据(就像工具的输入口)。
  • 实参(实际参数):我们在调用函数时传进去的具体数值。

📝 举个例子:

CPP
int square(int x) {  // x 是形参
    return x * x;
}

int result = square(5); // 5 是实参

3.2 总结

比较项目 形参 实参
定义位置 函数定义时 函数调用时
是否有具体数值 没有,只是变量名 有,是具体的值
生命周期 函数内部使用 函数调用时确定

四、函数练习样例

写一个计算三角形面积的函数(已知底和高):

CPP
float triangleArea(float base, float height) {
    return 0.5 * base * height;
}

调用示例:

CPP
float area = triangleArea(4.0, 5.0); // 输出应为 10.0

有了函数,就像有了积木一样,可以把每个功能都封装起来,拼成更大的“程序城堡”。


五、小结

重点 内容
模块化编程 把程序拆成多个小功能,方便管理和复用
函数声明 告诉程序有这个函数
函数定义 编写函数具体内容
函数调用 使用函数完成任务
形参与实参 一个是“接收器”,一个是“传进来的值”

拓展一:函数命名空间

🧭 什么是命名空间(namespace)?

命名空间就像“姓氏”或“标签”,用来给变量、函数、类等加上一个作用域的名字,避免名字冲突。

举个例子:

你有两个同名的函数:

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

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

编译器会报错,因为它们名字一样,不知道该用哪个。加上命名空间就没问题了:

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

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

使用时你就可以区分了:

CPP
int x = Math1::add(3, 4);  // 结果是7
int y = Math2::add(1, 2, 3); // 结果是6

🧩 那函数定义和命名空间到底有什么关系?

场景 描述 示例
函数在命名空间里定义 函数属于该命名空间 namespace Tool { void sayHi(); }
使用函数时没写命名空间 找不到函数,编译报错 需要写 Tool::sayHi()
使用 using 语句 可以省略命名空间前缀 using namespace Tool; sayHi();

🚨 注意点

  1. 命名空间就像“姓氏”一样重要,特别是当项目变大时。
  2. 如果不小心定义了多个名字相同的函数,不在命名空间中就容易冲突。
  3. 如果用 using namespace std;,就可以不写 std::,比如直接写 cout 代替 std::cout,但在大项目里要慎用

拓展二:std 命名空间

🔍 什么是 std 命名空间?

stdstandard(标准) 的缩写,是 C++标准库的命名空间

也就是说,C++自带的各种功能(如输入输出、字符串、容器等)都放在 std 命名空间里,防止与你自己写的函数或变量冲突。

🌟 举个例子:

我们常写的这句代码:

CPP
std::cout << "Hello, world!" << std::endl;

这句里有两个 std::

  • std::cout:标准输出流(显示文字)
  • std::endl:标准换行符

这两个东西都在 std 命名空间里。如果不写 std:: 就会报错。根据前面介绍,两种写法:

加上命名空间前缀:

CPP
std::cout << "Hello";

使用 using 指令:

CPP
using namespace std;
cout << "Hello"; // ✅ 现在可以省略 std::

⚠️ 小提醒:虽然 using namespace std; 很方便,但在大型项目中不推荐使用,容易出现命名冲突。 {: .prompt-warning}


📦 std 命名空间中常见的内容

名称 含义
cout 输出(console output)
cin 输入(console input)
endl 换行符
string 字符串类
vector 动态数组
sort 排序函数

💡 OneCoder 资源指引

所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI

🤝 技术交流与答疑

欢迎加入:C++ GESP/CSP 考级答疑群(688906745)Java/Python交流群(982860385),点击可直接加群。

📚

猜你想读 · 相关文章推荐

GESP 编程与算法 · 四级⏱️ 20 分钟

【GESP】C++四级考试大纲知识点梳理, (1) 指针

GESP C++四级官方考试大纲中,共有11条考点,本文针对第一条考点进行分析介绍。之前对1-3级大纲知识点的梳理思路是仅梳理编程基础知识考纲条目,对于C++编程本身语法和规则相关考纲要求,因为网上可查看的信息非常多,所以不做梳理。但目前来看,一方面系统梳理有利于孩子系统学习,另一方面感觉网上其他学习的同学也习惯针对考...

阅读全文 →
GESP 编程与算法 · 四级⏱️ 44 分钟

【GESP】C++四级考试大纲知识点梳理, (2) 结构体和二维数组

GESP C++四级官方考试大纲中,共有11条考点,本文针对第2条考点进行分析介绍。 (2)掌握 C++结构体、二维及多维数组的基本概念及使用 {: .prompt-info} 四级其他考点回顾: 【GESP】C++四级考试大纲知识点梳理, (1) 指针 {: .prompt-tip}

阅读全文 →
GESP 编程与算法 · 四级⏱️ 13 分钟

【GESP】C++四级考试大纲知识点梳理, (4) 变量和作用域

GESP C++四级官方考试大纲中,共有11条考点,本文针对第4条考点进行分析介绍。 (4)掌握变量作用域的概念,理解全局变量与局部变量的区别。 {: .prompt-info} 四级其他考点回顾: - 【GESP】C++四级考试大纲知识点梳理, (1) 指针 - 【GESP】C++四级考试大纲知识点梳理, (2) 结...

阅读全文 →
OneCoder

OneCoder (lihongzheshuai)

一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com

💬 读者留言与交流

0 条讨论
✨ 支持 Markdown 语法格式
还没有留言,快来成为第一个讨论者吧!