Skip to content

C/C++学习要点总结

C语言基础

C语言概述

  • C语言特点
    1. 简洁而高效:C语言设计简洁,语法规则相对简单,学习容易上手。同时,C语言的编译器通常能够生成高效的机器代码,执行效率高。
    2. 面向过程:C语言是一种面向过程的语言,它的设计思想是通过一系列的步骤来完成任务,强调程序的执行过程和控制流程。
    3. 可移植性强:C语言的标准库和语法规范相对稳定,使得用C语言编写的程序在不同的计算机平台上具有较好的可移植性,只需要进行少量的修改就可以在不同的系统上运行。
    4. 丰富的标准库:C语言提供了丰富的标准库,包括输入输出、字符串处理、内存管理等方面的函数,可以方便地进行各种操作。
    5. 直接访问内存:C语言允许直接访问计算机内存,可以进行底层的操作,这使得C语言在系统编程和嵌入式系统开发中得到广泛应用。
    6. 支持指针:C语言支持指针,可以直接操作内存地址,这样可以更灵活地进行内存管理和数据操作,但也增加了程序出错的可能性。
    7. 可扩展性:C语言支持通过函数和模块化的方式进行程序设计,可以方便地扩展和维护程序。
  • 认识C程序

算法

  • 什么是算法
  • 算法怎么描述

分支语句、循环

  • if else
  • for()
  • while
  • switch
  • do...while()

数据类型

  • 整型
    • int、short、long、long long
  • 浮点型
    • float、double、long double
  • 字符型
    • char、string
  • 布尔型
    • bool

运算符与表达式

  • 算术运算符
  • 逻辑运算符
  • 关系运算符
  • 赋值运算符
  • 位运算符

函数

  • 函数是什么
  • 函数声明
  • 函数的参数、返回值
  • 函数的调用

数组

  • 一维数组、二维数组、字符数组
  • 数组的初始化
  • 数组的应用

指针初识

  • 指针是什么
  • 数组与指针
  • 空指针
  • 野指针

C语言进阶

指针深入

  • 指针变量作函数参数
  • 指针函数与函数指针
  • 指针的各种使用场合

文件操作

  • 文件基本操作
  • 文件读写
  • 基于文件描述符的IO操作

内存管理

  • 内存组织方式
  • 动态内存管理

预处理

  • 宏定义
  • #include指令
  • 条件编译

位运算

  • 位与字节
  • 运算

多线程编程

网络编程

C++基础

C++语法

  • 变量声明
  • 数据类型
  • 运算符
  • 控制流程语句

C++函数

  • 定义
  • 调用
  • 传递方式
    • 值传递
    • 引用传递
    • 指针传递
  • 函数重载
    • 优点:不需要再想其他的名字。
    • 根据函数的返回值类型,函数的形参,形参的个数,形参的顺序,从而确定匹配的重载函数。
    • 重载匹配原则
      • 严格匹配
      • 对于实参传值int类型,可以匹配short int,可以匹配char,可以匹配long,可以匹配double类型。
      • 对于实参传值double类型,可以匹配float。

类和对象

  • 成员变量
    • private
    • protected
    • public
  • 成员函数
    • 重载成员函数
    • 调用成员函数
      • 对象调用
      • 指针传递调用
      • 应用传递调用
    • 在成员函数中访问成员变量
      • 加this
      • 不加this
  • 类的作用域
  • 可见性
    • 类名与变量名一样
    • 类名与函数名一样
    • 类名与成员函数名一样是构造函数
  • 构造函数
    • 构造函数的特点:函数名与类名一致,无返回值,也没有void,对象产生时会自动调用构造函数。
    • 无参构造函数
      • 默认构造函数,不需要手动调用。
      • 自定义无参构造函数
    • 带参构造函数
      • 负责创建对象的同时,初始化对象成员变量。
      • 如果一个类定义了一个带参构造函数,那这个类就不提供构造函数,需要自己定义。
    • 重载构造函数
    • 默认参数的构造函数
    • 注意点:在开发过程中,防止调用A a(),却没有实现它,所以我们默认定义一个无参构造函数的实现。
    • 拷贝构造函数
      • 默认拷贝构造函数:一个成员一个成员的拷贝,成员如果是普通类型的,就简单的值拷贝,成员如果是类对象,则调用其拷贝构造函数或默认拷贝构造函数。
      • 深拷贝
        • 只是拷贝一个指针,并没有新开辟一个地址,拷贝的指针和原来的指针指向同一块地址, 如果原来的指针所指向的资源释放了,那么再释放浅拷贝的指针资源就会出现错误
      • 浅拷贝
        • 浅拷贝拷贝的仅仅是指向被复制的内存地址,如果原地址中对象被改变了,那么浅拷贝出来的对象也会相应的改变
  • 析构函数
    • 析构函数的特点
    • 虚析构函数
  • 构造对象过程
    • 局部对象和静态对象,以声明的对象构造,静态对象只被构造一次。
    • 类的数据成员在其类中以声明的顺序构造

面向对象的三大特征

  • 封装

    • 隐藏对象的属性和实现细节,仅仅对外提供接口和方法。
    • 优点:1)隔离变化;2)便于使用; 3)提高重用性; 4)提高安全性
    • 缺点:1)如果封装太多,影响效率; 2)使用者不能知道代码具体实现。
  • 继承

    • 单继承
    • 多继承
    • 菱形继承
  • 多态

    • 静态多态(编译时)
      • 函数模板和重载
    • 动态多态(运行时)
      • 虚函数
  • 默认参数的函数

    • 优点:调用函数时,不指定参数,按指定的默认值进行工作。
    • 带默认参数函数的声明:函数声明和函数的定义默认值只能允许给一次
    • 多个形参的默认值,从右向左定义,不能跳着给默认值,函数在调用匹配的时候从左向右匹配。
  • 标注库

C++进阶

模板

  • 类模板
  • 函数模板

STL库

  • vector
  • deque
  • list
  • map/unordered_map
  • set/unordered_set

C11/C17/C20新特性

多线程编程

  • 线程同步和互斥机制
  • std::thread
  • std::mutex

Lambda表达式

  • 语法
  • 用法

移动语义和右值引用

  • 概念
  • 用法
  • 应用场景

智能指针

  • shared_ptr
  • unique_ptr
  • weak_ptr
  • auto_ptr(已弃用)

设计模式

  • 工程模式
  • 单例模式
  • 观察者模式

性能优化