一本不错的linux c学习教程,很基础的。相信对大家有帮助。请记住,要在WINDOWS系统下才看得到。。。。,天啊,为什么Linux下看到的是乱码?如果大家有能在linux系统下看到的,请也给我一份,我的E-MAIL:junlinworld@gmail.com
### Linux+C编程一站式学习知识点概览
#### 一、C语言入门
**1.1 程序的基本概念**
- **程序与编程语言**: 解释程序的定义以及编程语言的作用,区分不同类型的编程语言(如解释型语言和编译型语言)。
- **自然语言与形式语言**: 比较自然语言与形式语言的区别,形式语言的特点及其在编程中的应用。
- **程序的调试**: 介绍常见的调试技巧和工具,如使用断点、单步执行等。
- **第一个程序**: 实现一个简单的“Hello World”程序,并解释程序的组成部分。
**2. 常量、变量和表达式**
- **继续Hello World**: 在“Hello World”基础上进一步扩展,例如添加变量来存储文本。
- **常量**: 定义常量的概念及作用,包括整型、浮点型、字符型常量等。
- **变量**: 讲解变量的声明、初始化和使用方法,介绍变量的作用域。
- **赋值**: 说明赋值操作符的功能及使用场景。
- **表达式**: 分析不同类型表达式的构成及计算规则。
- **字符类型与字符编码**: 探讨字符数据类型及其在不同编码标准下的表示方式。
**3. 简单函数**
- **数学函数**: 展示如何使用标准库中的数学函数进行计算。
- **自定义函数**: 教授如何定义自己的函数来实现特定功能。
- **形参和实参**: 解释形式参数与实际参数的区别及其传递方式。
- **局部变量与全局变量**: 对比局部变量与全局变量的生命周期和可见范围。
**4. 分支语句**
- **if语句**: 介绍条件判断语句的基本用法及嵌套结构。
- **if/else语句**: 讲解更复杂的条件分支结构。
- **布尔代数**: 探讨逻辑运算符的应用。
- **switch语句**: 分析多分支选择语句的特点和使用场合。
**5. 深入理解函数**
- **return语句**: 阐述函数返回值的意义及如何通过return语句返回结果。
- **增量式开发**: 强调逐步构建软件的重要性。
- **递归**: 讲解递归函数的设计原理及其应用场景。
**6. 循环语句**
- **while语句**: 介绍基本的循环结构及其控制条件。
- **do/while语句**: 演示至少执行一次循环体的循环结构。
- **for语句**: 分析用于固定次数迭代的循环结构。
- **break和continue语句**: 解释循环控制语句的作用。
- **嵌套循环**: 讨论多层循环结构的设计方法。
- **goto语句**: 警告使用goto可能导致的问题。
**7. 结构体**
- **复合数据类型——结构体**: 介绍结构体的定义及其成员变量的访问方法。
- **数据抽象**: 探讨数据隐藏的重要性及其实现机制。
- **数据类型标志**: 分析不同类型标志的用途。
- **嵌套结构体**: 展示结构体内包含其他结构体的实例。
**8. 数组**
- **数组的基本操作**: 包括初始化、索引访问等。
- **数组应用实例**: 如统计随机数、绘制直方图等。
- **字符串**: 使用字符数组来处理字符串。
- **多维数组**: 介绍二维或多维数组的声明与使用。
**9. 编码风格**
- **缩进和空白**: 规范代码格式的重要性。
- **注释**: 如何编写有用的注释。
- **标识符命名**: 推荐的命名约定。
- **函数**: 设计清晰、简洁的函数结构。
- **indent工具**: 自动格式化代码的方法。
**10. gdb**
- **单步执行和跟踪函数调用**: 使用gdb进行调试的基础技巧。
- **断点**: 设置断点以暂停执行的方法。
- **观察点**: 监视变量变化的功能。
- **段错误**: 解决程序崩溃问题的策略。
**11. 排序与查找**
- **算法的概念**: 定义算法及其评估指标。
- **插入排序**: 实现一种简单的排序算法。
- **算法的时间复杂度分析**: 评估算法效率的方法。
- **归并排序**: 分析一种高效的排序算法。
- **线性查找**: 查找数据的基本方法。
- **折半查找**: 提高查找效率的技术。
**12. 栈与队列**
- **数据结构的概念**: 数据结构的定义及其分类。
- **堆栈**: 堆栈的实现方式及应用场景。
- **深度优先搜索**: 介绍一种遍历树或图的方法。
- **队列与广度优先搜索**: 使用队列进行广度优先搜索。
- **环形队列**: 一种特殊的队列结构。
**13. 本阶段总结**
- **C语言基本语法**: 总结本阶段学到的C语言基础知识。
- **思维方法与编程思想**: 培养解决问题的能力。
- **调试方法**: 巩固调试技巧。
#### 二、C语言本质
**14. 计算机中数的表示**
- **为什么计算机用二进制计数**: 解释二进制的优越性。
- **不同进制之间的换算**: 如何进行二进制与其他进制之间的转换。
- **整数的加减运算**: 介绍二进制数的算术运算。
- **浮点数**: 浮点数的表示方法及精度问题。
**15. 数据类型详解**
- **整型**: 不同整型数据类型的特点。
- **浮点型**: 浮点型数据类型的格式。
- **类型转换**: 自动和强制类型转换的规则。
- **Integer Promotion**: 在某些上下文中将小整数类型提升为int的过程。
- **Usual Arithmetic Conversion**: 在算术运算中自动调整类型的规则。
- **由赋值产生的类型转换**: 赋值过程中发生的隐式转换。
- **强制类型转换**: 明确指定的数据类型转换方法。
- **编译器如何处理类型转换**: 编译器默认行为及其可能引发的问题。
**16. 运算符详解**
- **位运算**: 按位与、或、异或、取反运算的实现。
- **移位运算**: 左移和右移的操作及其应用。
- **掩码**: 使用掩码进行位操作的技巧。
- **其它运算符**: 复合赋值、条件运算符等特殊运算符的用法。
- **SideEffect与SequencePoint**: 了解副作用和序列点的概念。
**17. 计算机体系结构基础**
- **内存与地址**: 内存模型及地址空间的概念。
- **CPU**: CPU的工作原理及指令集架构。
- **设备**: 输入输出设备的交互机制。
- **MMU**: 内存管理单元的作用。
- **MemoryHierarchy**: 内存层次结构的组成。
**18. x86汇编程序基础**
- **最简单的汇编程序**: 编写一个基本的x86汇编程序。
- **x86的寄存器**: 寄存器的功能及其使用。
- **第二个汇编程序**: 更复杂的汇编示例。
- **寻址方式**: 不同类型的寻址模式。
- **ELF文件**: 可执行和链接格式文件的结构。
**19. 汇编与C之间的关系**
- **函数调用**: 在C和汇编之间进行函数调用的方法。
- **main函数和启动例程**: C程序入口点的实现。
- **变量的存储布局**: 变量在内存中的排列顺序。
- **结构体和联合体**: 结构体与联合体在汇编中的表示。
- **C内联汇编**: 在C代码中直接嵌入汇编指令的技巧。
- **volatile限定符**: volatile关键字的含义及其用途。
**20. 链接详解**
- **多目标文件的链接**: 将多个目标文件合并为一个可执行文件的过程。
- **定义和声明**: 函数和变量的定义与声明区别。
- **extern和static关键字**: 这两个关键字的作用及其用法。
- **头文件**: 头文件的作用及如何正确地使用它们。
- **定义和声明的详细规则**: 清晰地定义与声明的规则。
- **静态库**: 静态库的创建和使用方法。
- **共享库**: 共享库的优缺点及其加载机制。
- **虚拟内存管理**: 虚拟内存系统的原理及实现。
**21. 预处理**
- **预处理的步骤**: 预处理阶段发生的事情。
- **宏定义**: 宏的定义及其使用注意事项。
- **函数式宏定义**: 定义具有参数的宏。
- **内联函数**: 内联函数的定义及优势。
- **#、##运算符和可变参数**: 特殊的宏处理符号及其用法。
- **宏展开的步骤**: 宏展开过程中的细节。
- **条件预处理指示**: #if等预处理指令的使用。
- **其它预处理特性**: 如条件编译、文件包含等额外功能。