C 学习笔记1

preview
需积分: 0 0 下载量 112 浏览量 更新于2022-08-03 收藏 1.49MB PDF 举报
【C语言学习笔记1】 本笔记主要涵盖了C语言的基础、高级特性和系统层面的知识,以及相关的开发工具。以下是对各个部分的详细说明: **第一部分:语言基础** 1. **数据类型** - `char`:8位有符号整数。 - `short`:16位有符号整数。 - `int`:32位有符号整数。 - `long`:在32位系统为32位整数,64位系统为64位整数。 - `long long`:64位有符号整数。 - `_Bool`(在`stdbool.h`中定义):8位整数,用于布尔逻辑,提供`bool`、`true`和`false`宏。 - `stdint.h`头文件提供了固定宽度的整数类型,如`int8_t`、`uint16_t`等,以确保跨平台的一致性。 2. **字面量**:表示常量的值,如整数字面量、浮点数字面量、字符字面量和字符串字面量。 3. **类型转换**:C语言允许显式或隐式地将一种类型转换为另一种类型,但需注意可能导致的数据溢出或精度丢失。 4. **运算符**:包括算术运算符、比较运算符、逻辑运算符、赋值运算符、位运算符等。 5. **语句**:如表达式语句、控制流语句(if、for、while、switch)、声明语句等。 6. **函数**:定义和调用函数,参数传递,返回值等。 7. **数组**:一维或多维数组的声明、初始化和操作。 8. **指针**:指向变量的地址,指针运算,解引用,指针数组,数组指针等。 9. **结构体**:自定义数据类型,包含多个不同类型的成员。 10. **联合**:与结构体类似,但所有成员共享同一块内存空间。 11. **位字段**:在结构体中定义按位存储的变量。 12. **声明**:声明变量、函数等,区分声明和定义。 13. **预处理**:宏定义、条件编译、文件包含等预处理器指令。 14. **调试**:介绍如何使用调试工具进行代码调试。 **第二部分:高级特性** 1. **指针概述**:深入讨论指针的使用和理解。 2. **数组指针**:如何处理和操作数组指针,特别是多维数组。 3. **指针数组**:数组元素是指针的特殊情况。 4. **函数调用**:递归调用、函数指针、变参函数等。 **第三部分:系统** 这部分涵盖了操作系统层面的概念,如: 1. **ELF文件格式**:Linux系统中的可执行文件格式。 2. **Linux进程模型**:进程创建、终止、状态等。 3. **核心转储**:当进程异常终止时,保存其内存状态的文件。 4. **线程**:多线程编程的概念和API。 5. **信号**:进程间通信的一种机制。 6. **僵尸进程**:已终止但未被父进程收割的进程状态。 7. **动态链接加载器**:如何加载和管理动态库。 8. **单元测试**:编写和执行单元测试的方法。 9. **内存池**(libmm):内存分配和管理的优化技术。 10. **垃圾收集器**(libgc):自动回收不再使用的内存。 11. **配置文件处理**(libconfig):读取和解析配置文件。 12. **事件通知**(libevent):异步事件处理库。 **第四部分:工具** 1. **GCC**:GNU编译器集合,用于C、C++等语言的编译。 2. **GDB**:GNU调试器,用于程序调试。 3. **VIM**:强大的文本编辑器,适用于代码编辑和调试。 4. **Make**:自动化构建工具,管理编译过程。 5. **Scons**:基于Python的构建工具,替代Make。 6. **Git**:分布式版本控制系统,用于代码版本管理和协作。 7. **Debug**:调试技巧和工具。 8. **Binutils**:包含了如objdump、nm等二进制文件处理工具。 9. **Manpages**:查看命令和库函数的在线帮助。 本笔记通过深入浅出的方式,旨在帮助读者全面理解和掌握C语言及其在实际开发中的应用。随着学习的深入,读者将能够编写更复杂的程序,并理解操作系统层面的概念,同时熟练使用各种开发工具,提高开发效率。