摘要1、本章总结 本章覆盖了C/C++编程的核心基础知识,为后续的安全开发打下坚实基础。 2、知识图谱 2.1、C语言基础 2.2、C++特性 3、关键技能检查表 3.1、基础篇 - [ ] 能够配置Windows/Linux开发环境 - [ ] 理解二进制、十六进制及其转换 - [ ] 掌握各种数据类型及其范围 - [ ] 熊练使用位运算操作标志位 - [ ] 能够编写递归算法 3.2、进阶篇 - [ ] 掌握指针与内存管理 - [ ] 能够使用Windows API操作文件和内存 - [ ] 理解结构体内存对齐 - [ ] 掌握函数指针与回调 3.3、C++篇 - [ ] 能够设计封装良好的类 - [ ] 理解虚函数表结构 - [ ] 掌握RAII资源管理模式 - [ ] 能够处理异常和SEH…
摘要1、课程目标 - 理解C++异常处理机制 - 掌握try-catch-throw的使用 - 理解异常与资源管理 - 了解Windows SEH异常 2、名词解释 3、代码实现 1. 基础异常处理 2. 自定义异常类 3. RAII与异常安全 4. Windows SEH 5、课后作业 5.1、作业1:实现异常安全的栈 实现一个栈类,在溢出和下溢时抛出异常。 5.2、作业2:练习SEH 使用SEH处理除零异常。
摘要1、课程目标 - 理解多态的概念 - 掌握虚函数和纯虚函数 - 理解虚函数表(vtable) - 掌握抽象类和接口 2、名词解释 3、代码实现 1. 虚函数基础 2. 抽象类和接口 3. 虚函数表查看 4、课后作业 4.1、作业1:实现动物类层次 实现Animal基类和Dog、Cat子类,使用多态。 4.2、作业2:解析vtable 手动解析一个类的虚函数表并调用其中的函数。
摘要1、课程目标 - 理解运算符重载的概念 - 掌握常见运算符的重载方法 - 理解友元函数 - 了解运算符重载的限制 2、名词解释 3、代码实现 1. 基础运算符重载 2. 下标运算符和赋值运算符 3、课后作业 3.1、作业1:实现复数类 实现加减乘除运算符。 3.2、作业2:实现智能指针 实现->*运算符的简单智能指针。
摘要1、课程目标 - 理解面向对象编程的基本概念 - 掌握类的定义和实例化 - 理解访问控制(public/private/protected) - 掌握构造函数和析构函数 2、名词解释 3、代码实现 1. 类的基本定义 2. 动态分配对象 3. 安全编程中的类设计 4、课后作业 4.1、作业1:实现银行账户类 实现存款、取款、查询余额功能。 4.2、作业2:实现内存包装类 封装VirtualAlloc/VirtualFree,自动释放内存。
摘要1、课程目标 - 掌握C语言文件IO函数 - 理解文本模式与二进制模式 - 掌握文件指针操作 - 了解常见的文件操作模式 2、名词解释 3、代码实现 1. 基础文件操作 2. 二进制文件 3. 文件定位 4、课后作业 4.1、作业1:文件复制 实现二进制文件复制功能。 4.2、作业2:简单配置文件解析 解析key=value格式的配置文件。
摘要1、课程目标 - 掌握宏定义的语法 - 理解宏与函数的区别 - 掌握宏的常见用法和注意事项 - 了解预处理指令 2、名词解释 3、代码实现 1. 基础宏定义 2. 宏的陷阱 3. 特殊操作符 4. 条件编译 5、课后作业 5.1、作业1:实现断言宏 实现一个MY_ASSERT宏,失败时打印文件名和行号。 5.2、作业2:实现日志宏 实现支持格式化输出的日志宏,包含时间戳。
摘要1、课程目标 - 掌握结构体的定义和使用 - 理解内存对齐和填充 - 掌握联合体和枚举类型 - 了解位域的使用 2、名词解释 3、代码实现 1. 结构体基础 2. 内存对齐 3. 联合体 4. 枚举 5、课后作业 5.1、作业1:实现链表节点 定义一个链表节点结构体并实现基本操作。 5.2、作业2:使用联合体解析IP地址 将DWORD类型的IP地址解析为4个字节。
摘要1、课程目标 - 掌握printf/scanf系列函数 - 理解标准输入输出与文件IO - 掌握Windows控制台API - 了解缓冲区和流的概念 2、名词解释 3、代码实现 1. printf格式化输出 2. scanf输入 3. Windows控制台API 4、课后作业 4.1、作业1:输入验证 实现一个安全的整数输入函数,能处理无效输入。 4.2、作业2:彩色输出 封装一个支持彩色输出的printf函数。
摘要1、课程目标 - 掌握函数的定义、声明和调用 - 理解参数传递方式(值传递、指针传递) - 掌握递归函数的实现 - 了解函数指针的使用 2、名词解释 3、代码实现 1. 函数基础 2. 参数传递方式 3. 递归函数 4. 函数指针 5、课后作业 5.1、作业1:实现排序函数 实现冒泡排序,接受函数指针作为比较函数。 5.2、作业2:汉诺塔 用递归实现汉诺塔问题。 5.3、作业3:计算器程序 使用函数指针数组实现简单计算器。