C语言进阶:重点、难点与疑点解析 PDF 高清电子书 免费下载 完整版 在线阅读- 高飞网
C语言进阶

C语言进阶
重点、难点与疑点解析

牟海军
C
浏览人数:147 在读人数:2
读者:    
    C语言是编程语言中的一朵奇葩,虽已垂垂老矣,但却屹立不倒,诞生了数十年,仍然是最流行的编程语言之一。C语言看似简单,却不易吃透,想要运用好,更是需要积淀。本书是一本修炼C程序设计能力的进阶之作,它没有系统地去讲解C语言的语法和编程方法,而是只对C语言中不容易被初学者理解的重点、难点和疑点进行了细致而深入的解读,揭露了C语言中那些鲜为普通开发者所知的秘密,旨在让读者真正掌握C语言,从而编写出更高质量的C程序代码。
    全书一共11章:第1章重点阐述了C语言中不易被理解的多个核心概念,很多初学者在理解这些概念时都会存在误区;第2~8章对预处理、选择结构和循环结构的程序设计、数组、指针、数据结构、函数和文件等知识点的核心问题和注意事项进行了讲解;第9章介绍了调试和异常处理的方法及注意事项;第10章对C语言中的若干容易让开发者误解误用的陷阱知识点进行了剖析;第11章则对所有程序员必须掌握的几种算法进行了详细的讲解;附录经验性地总结了如何养成良好的编码习惯,这对所有开发者都尤为重要。
    本书主要内容:
    	堆和栈、全局变量和局部变量、生存期和作用域、内部函数和外部函数、指针变量、指针数组和数组指针、指针函数和函数指针、传址和传值、递归和嵌套、结构体和共用体、枚举、位域等较难理解的核心概念的阐述和对比;
    	预处理中的疑难知识点,包括文件的包含方式、宏定义及其常见错误解析、条件编译指令和#pragma指令的使用等;
    	if、switch等选择结构语句的使用注意事项和易错点解析;
    	for、while、do while等循环结构语句的使用注意事项和易错点解析;
    	循环结构中break、continue、goto、return、exit的区别;
    	一维数组、二维数组、多维数组、字符数组、动态数组的定义和引用,以及操作数组时的各种常见错误解析;
    	不同类型的指针之间的区别,以及指针的一般用法和注意事项;
    	指针与地址、数组、字符串、函数之间的关系,以及指针与指针之间的关系;
    	枚举类型的使用及注意事项,结构体变量和共用体变量的初始化方法及引用;
    	传统链表的实现方法和注意事项,以及对传统链表实现方法的颠覆;
    	与函数参数、变参函数、函数调用、函数指针相关的一些难理解和容易被理解错的知识点解析;    	文件和指针的使用原则、技巧和注意事项;
    	函数调用和异常处理的注意事项和最佳实践;
    	与strlen、sizeof、const、volatile、void、void*、#define、typedef、realloc、malloc、calloc等相关的一些陷阱知识点的解析;
    	时间复杂度、冒泡排序法、选择排序法、快速排序法、归并排序法、顺序排序法、二分查找等常用算法的详细讲解;
    	良好的编码习惯和编程风格。

前言    2
第1章 必须厘清的核心概念 1   
1.1 堆栈 2   
1.2 全局变量和局部变量 5   
1.3 生存期和作用域 7   
1.3.1 生存期 7   
1.3.2 作用域 10   
1.4 内部函数和外部函数 11   
1.5 指针变量 14   
1.6 指针数组和数组指针 17   
1.7 指针函数和函数指针 20   
1.8 传值和传址 22   
1.9 递归和嵌套 25   
1.10 结构体 29   
1.11 共用体 32   
1.12 枚举 37   
1.13 位域 39   
第2章 预处理 47   
2.1 文件的包含方式 48   
2.2 宏定义 50   
2.2.1 简单宏替换 50   
2.2.2 带参数的宏替换 52   
2.2.3 嵌套宏替换 56   
2.3 宏定义常见错误解析 56   
2.3.1 不带参数的宏 56   
2.3.2 带参数的宏 59   
2.4 条件编译指令的使用 62   
2.5 #pragma指令的使用 65   
第3章 选择结构和循环结构的程序设计 69   
3.1 if语句及其易错点解析 70   
3.2 条件表达式的使用 76   
3.3 switch语句的使用及注意事项 78   
3.4 goto语句的使用及注意事项 85   
3.5 for语句的使用及注意事项 87   
3.6 while循环与do while循环的使用及区别 92   
3.7 循环结构中break、continue、goto、return和exit的区别 98   
第4章 数组 103   
4.1 一维数组的定义及引用 104   
4.2 二维数组的定义及引用 110   
4.3 多维数组的定义及引用 117   
4.4 字符数组的定义及引用 119   
4.5 数组作为函数参数的易错点解析 124   
4.6 动态数组的创建及引用 130   
第5章 指针 139   
5.1 不同类型指针之间的区别和联系 140   
5.2 指针的一般性用法及注意事项 144   
5.3 指针与地址之间的关系 148   
5.4 指针与数组之间的关系 153   
5.5 指针与字符串之间的关系 161   
5.6 指针与函数之间的关系 163   
5.7 指针与指针之间的关系 169   
第6章 数据结构 172   
6.1 枚举类型的使用及注意事项 173   
6.2 结构体变量的初始化方法及引用 177   
6.2.1 结构体的初始化 177   
6.2.2 结构体的引用 180   
6.3 结构体字节对齐详解 184   
6.4 共用体变量的初始化方法及成员的引用 193   
6.5 传统链表的实现方法及注意事项 196   
6.6 颠覆传统链表的实现方法 214   
6.6.1 头结点的创建 214   
6.6.2 结点的添加 215   
6.6.3 结点的删除 217   
6.6.4 结点位置的调整 219   
6.6.5 检测链表是否为空 221   
6.6.6 链表的合成 222   
6.6.7 宿主结构指针 225   
6.6.8 链表的遍历 225   
第7章 函数 230   
7.1 函数参数 231   
7.2 变参函数的实现方法 235   
7.3 函数指针的使用方法 241   
7.4 函数之间的调用关系 245   
7.5 函数的调用方式及返回值 251   
第8章 文件 255   
8.1 文件及文件指针 256   
8.2 EOF和FEOF的区别 259   
8.3 读写函数的选用原则 264   
8.4 位置指针对文件的定位 270   
8.5 文件中的出错检测 275   
第9章 调试和异常处理 279   
9.1 assert宏的使用及注意事项 280   
9.2 如何设计一种灵活的断言 283   
9.3 如何实现异常处理 287   
9.4 如何处理段错误 293   
第10章 陷阱知识点解剖 299   
10.1 strlen和sizeof的区别 300   
10.2 const修饰符 301   
10.3 volatile修饰符 305   
10.4 void和void*的区别 311   
10.5 #define和typedef的本质区别 314   
10.6 条件语句的选用 317   
10.7 函数realloc、malloc和calloc的区别 319   
10.8 函数和宏 322   
10.9 运算符==、=和!=的区别 323   
10.10 类型转换 324   
第11章 必须掌握的常用算法 326   
11.1 时间复杂度 327   
11.2 冒泡法排序 329   
11.3 选择法排序 332   
11.4 快速排序 334   
11.5 归并排序 337   
11.6 顺序查找 340   
11.7 二分查找 341   
附录 如何养成良好的编程习惯 344   
看过本书的人还看过