本书由杰哥精心编写,既有实战技能可以快速上手,也有内功扎实熟悉底层原理后劲十足。
C语言在编程界的江湖地位可以是至尊无上的,在大学也往往作为一门编程的入门语言。 市面上关于C语言学习的书籍非常多。有的过于深奥,让广大初学者望而生畏;有的过于浅显,浅入浅出,仅限于简单的示例;有的不注重实战,工作用不到的内容长篇大论,浪费读者时间。
目录
内容简介 13
前言 15
第一章 C语言概述 19
1.1、 C语言简介 19
1.1.1 C语言发展史 19
1.1.2 C语言的优点 19
1.1.3 C语言的特点 20
1.1.4 如何学习C语言 21
1.1.5 C语言标准 21
1.2、 搭建一个方便易用的开发环境 22
1.2.1 常用的C编译器和代码编辑环境 22
1.2.2 为什么选择CodeBlocks 22
1.2.3安装CodeBlocks 22
1.2.4使用CodeBlocks 23
1.3、 C语言程序 31
1.3.1 C语言程序的开发步骤 31
1.3.2 C语言的程序结构 32
1.3.3 刚写代码你可能会犯得错误 33
1.3.4 C程序注释信息 34
1.3.5 C语言程序的书写规范 34
本章小结 35
习 题 36
第二章 数据类型 37
2.1 概述 37
2.1.1 字符集 37
2.1.2 标识符 37
2.1.2 保留字(关键字) 38
2.2 数据类型 38
2.2.1 基本类型 39
2.2.2 构造类型 42
2.2.3 指针类型 42
2.2.4 空类型 42
2.3 常量 42
2.3.1 直接常量和符号常量 43
2.3.2 符号常量的优点 44
2.3.3 直接常量的书写格式 44
2.3.4 转义字符 45
2.3.5 字符串 47
2.4 变量 48
2.4.1 变量的定义 48
2.4.2变量的初始化 49
2.4.3 变量在内存中占据的空间和变量的值 49
2.4.4 变量赋值 55
2.5 程序中数据的输入输出 56
2.5.1 字符输入输出 56
2.5.2 格式化输入输出 58
本章小结 63
习 题 64
第三章 运算符和表达式 65
3.1基本概念 65
3.1.1运算符 65
3.1.2表达式 66
3.2算术运算符与表达式 67
3.2.1算术运算符 67
3.2.2自增、自减运算符 67
3.2.3算术表达式和优先级与结合性 68
3.3 赋值运算符与赋值表达式 69
3.3.1赋值表达式 69
3.3.2复合运算符 69
3.4逗号运算符和逗号表达式 70
3.4.1逗号表达式的一般形式 70
3.4.2逗号表达式的优先级和结合性 71
3.5关系运算符与关系表达式 72
3.5.1关系运算符的种类 72
3.5.2关系表达式的一般形式 72
3.6逻辑运算符与逻辑表达式 73
3.6.1逻辑运算符 73
3.6.2逻辑表达式 73
3.6.3优先级和结合性 74
3.7条件运算符 75
3.8 类型转换 76
3.8.1隐式类型转换 76
3.8.2显式类型转换 78
3.9 运算符的优先级与结合性 79
3.9.1运算符的优先级 79
3.9.2运算符的结合性 80
本章小结 80
习 题 81
第四章 流程控制语句 82
4.1 程序中语句的分类 82
4.1.1 表达式语句 82
4.1.2 函数调用语句 83
4.1.3 空语句 83
4.1.4 复合语句 83
4.1.5 控制语句 84
4.2 顺序结构 84
4.3 选择结构 85
4.3.1 用if语句实现选择结构 85
4.3.2 条件运算符和条件表达式 92
4.3.3 switch语句 93
4.4 循环结构 96
4.4.1 while语句 96
4.4.2 do-while语句 99
4.4.3 for语句 101
4.5其他控制语句 105
4.5.1 break语句 105
4.5.2 continue语句 106
4.6 嵌套循环 107
4.6.1嵌套循环使用实例 107
本章小结 109
习 题 110
第五章 数组 111
5.1一维数组 111
5.1.1 一维数组的定义 111
5.1.2 一维数组的初始化 112
5.1.3一维数组的数组元素访问 114
5.1.4一维数组的数组元素赋值 115
5.1.5 一维数组的应用 116
5.2 二维数组 117
5.2.1二维数组的定义 118
5.2.2二维数组的初始化 118
5.2.3二维数组的数组元素访问 120
5.2.4二维数组的应用 122
5.3多维数组的逻辑结构和存储结构 124
本章小结 125
习 题 126
第六章 函数 127
6.1函数概述 127
6.2 函数的作用 129
6.3函数定义和使用 129
6.3.1函数的定义与申明 129
6.3.2函数的返回值和返回类型 132
6.3.3函数原型声明与函数调用 133
6.3.4函数调用的过程 135
6.4函数的参数 135
6.4.1形参和实参 136
6.4.2函数调用时的数据传递 136
6.4.3数组作为函数参数 137
6.5函数的嵌套调用 138
6.6函数的递归 140
6.6.1递归的基本原理 140
6.6.2 递归的使用 141
6.7变量的类型 142
6.7.1 局部变量 142
6.7.2 全局变量 143
6.8变量的存储方式和生存期 143
6.8.1 动态存储和静态存储 144
6.8.2 局部变量的存储类别 144
6.8.3 全局变量的存储类别 146
本章小结 147
习 题 148
第七章 字符串 150
7.1字符串概述 150
7.1.1字符串声明 150
7.1.2字符常量与字符串常量 150
7.1.3字符数组与字符串 151
7.2字符串操作函数 152
7.2.1字符串长度函数 152
7.2.2字符串比较函数 153
7.2.3字符串拷贝函数 154
7.2.4字符串拼接函数 154
7.2.5字符串大小写转换函数 155
7.2.6字符串查找的函数 156
本章小结 158
习 题 159
第八章 编译及预处理 160
8.1 概述 160
8.2文件包含 161
8.3 宏定义 164
8.3.1 不带参数的宏定义 164
8.3.2 带参数的宏定义 165
8.3.3预定义宏 166
8.4条件编译 167
本章小结 170
习 题 171
第九章 指针 172
9.1 地址与指针 172
9.2 变量与指针 173
9.3 指针变量 174
9.3.1 指针变量的定义 174
9.3.2 指针变量的赋值 175
9.3.3 指针变量的引用 176
9.4 指针运算 178
9.4.1指针变量的大小 178
9.4.2指针变量的运算 179
9.5指针与数组 181
9.5.1指向数组元素的指针 181
9.5.2通过指针引用数组元素 182
9.5.3 指针数组 185
9.5.4 通过指针引用多维数组 187
9.6 指向指针的指针 191
9.7 指针与函数 192
9.7.1 指针作为函数参数 192
9.7.2 指针作为函数返回值 193
9.7.3 指向函数的指针 194
9.7.4数组作为函数参数 197
9.8 指针与字符串 198
本章小结 202
习 题 203
第十章 结构体、共用体与枚举类 204
10.1结构体 204
10.1.1结构体的概念 204
10.1.2结构体变量的定义 206
10.1.3结构体的初始化和引用 208
10.1.4 结构的大小 210
10.2结构体数组 213
10.2.1 结构体数组的定义 213
10.2.2 结构体数组的初始化和使用 215
10.3 结构体指针 217
10.3.1 指向结构体变量的指针 218
10.3.2 指向结构体数组的指针 220
10.3.3 结构体变量作函数参数 221
10.4 用typedef定义类型 225
10.5 用结构体处理链表 227
10.5.1 链表概述 228
10.5.2 内存动态管理函数 229
10.4.4 链表的常用操作 233
10.5 共用体 250
10.5.1 共用体概念 250
10.5.2 引用共用体变量 252
10.5.3 共用体的应用 252
10.6 枚举类型 254
本章小结 258
习 题 259
第十一章 文件 260
11.1 文件 260
11.1.1文件的分类 261
11.1.2文件指针 262
11.2文件基本操作 263
11.2.1打开文件 263
11.2.2 关闭文件 265
11.3文件读写操作 265
11.3.1字符读写函数fgetc()和fputc() 265
11.3.2字符串读写函数fgets()和fputs() 267
11.3.3格式化读写函数fscanf()和 fprinf() 269
11.3.4数据块读写函数fread() 和fwrite() 271
11.4 文件定位 274
本章小结 279
习 题 280
附录 常用C标准库函数 280
1、数学函数 280
1.1 abs() 280
1.2 exp() 281
1.3 pow() 281
1.4 sqrt() 281
2 、时间函数 282
2.1 asctime() 282
2.2 ctime() 283
2.3 clock() 283
2.4 gmtime() 284
2.5 localtime() 284
2.6 difftime() 285
2.7 time() 286
3、其他函数 286
3.1 abort() 286
3.2 atexit() 287
3.3 exit() 288
3.4 rand()和srand() 288
3.5 system() 289
3.6 assert() 289
附录 阶段游戏 290
阶段项目(一)--俄罗斯方块 290
1.1需求分析 290
1.2界面绘制 292
1.2.1 ANSI字符控制 292
1.2.2字符控制的函数封装 294
1.2.3绘制主界面 295
1.2.3绘制方块 297
1.3定时器的使用 303
1.3.1设置定时器 303
1.3.2方块的自动下落 304
1.4键盘控制 304
1.4.1方块左移与右移 305
1.4.2方块的翻转 305
1.5碰撞检测与方块消除 306
1.5.1碰撞检测 307
1.5.2方块消除 307
1.6 分数和等级 308
阶段项目(二)------贪吃蛇游戏 309
2.1需求分析 309
2.1.1数据结构分析 309
2.1.2模块划分 310
2.2界面显示 315
2.2.1画墙 315
2.2.2画蛇 316
2.2.3画食物 316
2.2.4显示分数 317
2.3 键盘控制 317
2.4碰撞检测 319
2.4.1检测是否蛇碰到墙 319
2.4.2检测蛇是否咬到自己的身体 319
2.4.3检测蛇是否吃到食物 320
2.5分数和级别 320
如果大家有什么需要咨询的,可以扫描下方二维码,我们一起探讨和分享。