跳转至

C/C++ 基础知识

约 894 个字 预计阅读时间 3 分钟

本节将讲解 C/C++ 语言的一些基础知识,如果你已上过 C/C++ 课程,或有一定的 C/C++ 编程经验,可以略过本节内容,直接阅读 HPC 中的 C/C++

对于 C/C++ 语言的初学者,我们推荐你阅读以下书籍/网站,由于内容的高度相似性,你可以按个人喜好任选一两个进行阅读与学习即可:

  • 《C++ Primer Plus》:非常经典的 C++ 入门教程,内容全面,也有高质量的中文版,网上有大量电子版资源,相信你可以凭借你的信息素养找到合适的版本
  • 《C Primer Plus》:与前者定位类似,不过聚焦 C 语言内容
  • 菜鸟 C++ 教程:在线 C++ 教程,包含一些可在线运行的实例,可以作为辅助资料
  • 菜鸟 C 教程:在线 C 教程,内容与 C++ 类似
  • Learncpp:一个优秀的 C++ 教学网站,内容全面且更新比较迅速,不过只有英文版
  • Cppreference中文版:C/C++ 的在线参考手册,内容及其全面且更新非常迅速,适合查阅 C/C++ 语言的各种细节与版本特性,可以作为参考书使用
  • 洛谷:一个在线编程评测平台,题目涵盖 C/C++ 的基础知识到高级算法,适合用来练习 C/C++ 编程能力与算法能力

本节接下来将仅简略列举 C/C++ 的大致知识框架,你可以按照对应的名称在上述书籍或网站中找到对应的章节进行学习。

使用 Linux 开发 C/C++ 程序

我们强烈推荐读者使用 Linux 系统作为 C/C++ 的开发环境,例如我们给出的标准环境就是一个很好的 C/C++ 的开发环境。推荐使用 VSCode 通过 SSH 协议连接到标准开发环境后开发。可使用 VSCode 的插件实现语法高亮等便捷编辑的特性。编译运行时我们推荐读者结合编译入门编译进阶的知识在命令行中编译运行你的 C/C++ 程序。这样做将快速提升你对于编译等的知识的理解。

  • 基础语法
    • Hello world
    • 基础数据类型(bool、char、int、float、double 等)
    • 基础输入输出(cin/cout、printf/scanf)
    • 常量与变量
    • 推荐习题
  • 流程控制
  • 函数
    • 定义函数
    • 形参与实参
    • 函数重载
  • 进阶数据类型
    • 数组
    • 字符串
    • 复合数据类型
      • struct
      • class
      • union
    • 枚举类型(enum)
    • 定宽类型(int8_t、uint32_t 等)
    • 别名
      • typedef
      • using
  • 指针与内存
    • 指针核心概念
    • 动态内存分配(malloc/free、new/delete)
    • 引用类型
  • 面向对象编程
    • 类与对象
    • 构造函数与析构函数
    • 成员函数与成员变量
    • 静态成员
    • 继承与多态
      • 虚函数与纯虚函数
    • 友元
    • 运算符重载
  • 模板基础
    • 函数模板
    • 类模板
    • 模板特化
  • 标准库
    • C 标准库
      • 字符串处理
      • 数学函数(math.h)
      • 文件操作(FILE*)
      • 时间操作(time.h)
    • C++ 标准库
      • STL(标准模板库)
        • 容器(vector、list、map 等)
        • 容器适配器(stack、queue 等)
        • 算法(sort、find 等)
        • 迭代器
      • 进阶输入输出
        • iostream
        • iomanip
      • 文件操作
        • fstream
        • filesystem
      • 时间处理
        • chrono
  • 杂项
    • 预处理指令基础
      • #include
      • #define
      • #if、#else、#elif
      • #ifdef、#ifndef、defined
    • 命名空间(namespace)
      • 内联命名空间
    • 异常处理
      • try-catch
      • std::exception