编辑推荐
本书特色是实现了入门知识、实例演示、范例演练、技术解惑、综合实战5大部分内容的融合,让读者看得懂、用得上、学得会。
一本书的容量,讲解了入门类、范例类和项目实战类三类图书的内容。
丰富的配套资源 学习更高效
330个实例,更多的实践演练机会
749分钟视频讲解,降低学习难度
220个拓展实例,真正地举一反三
69个技术解惑,破解学习难点
“技术讲解”→范例演练”→“技术解惑”贯穿全书,全面掌握C语言开发
技术讲解:通过110个实例,循序渐进地讲解了C语言开发的各个知识点。
范例演练:220个拓展范例和2个综合实例,使读者真正具有项目实战能力。
技术解惑:把容易混淆的概念单独讲解和剖析,帮助读者绕过学习中的陷阱。
内容简介
本书循序渐进、由浅入深地详细讲解了C语言开发的技术,并通过具体实例的实现过程演练了各个知识点的具体使用流程。全书共22章,第1~4章分别讲解了C语言开发的基础知识,包括C语言简介,安装开发工具等;第5~10章分别讲解了函数、输入/输出、流程控制、数组操作等知识,这些内容都是C语言技术的核心知识;第11~20章分别讲解了指针、结构体、共用体和枚举、链表、位运算、预编译、文件操作、错误调试和高级编程技术的知识,这些内容是C语言开发技术的重点和难点;第21~22章分别通过2个综合实例的实现过程,介绍了C语言在综合项目中的开发过程。全书内容以“技术解惑”和“范例演练”贯穿全书,引领读者全面掌握C语言。
本书不但适用C语言的初学者,也适合有一定C语言基础的读者学习,还可以作为大专院校相关专业的师生用书和培训学校的教材。
作者简介
上海复旦大学计算机科学技术学院硕士,通信工程博士,精通Java、C语言、C++程序开发,擅长底层技术和应用程序的结合。现在就职于可穿戴设备委员会成员单位上海微系统研究院,专门从事于可穿戴设备的研发工作。在工作过程中申请了多项国家专利,是国内可穿戴设备行业的领军人物。
目录
- 第1章C语言之定位1
- (视频总计24分钟,实例1个,拓展实例2个,技术解惑3个)
- 1.1C语言的诞生2
- 1.2第一印象的建立2
- 1.3理解编译系统——学习的第一步3
- 1.4揭开存储器的层次5
- 1.5技术解惑6
- 1.5.1学习C语言还有用吗6
- 1.5.2怎样学好C语言7
- 1.5.3学好C语言的建议7
- 第2章C语言开发工具详解8
- (视频总计15分钟,技术解惑3个)
- 2.1用DOS开发C程序9
- 2.1.1安装Turbo C 3.09
- 2.1.2认识Turbo C 3.0集成开发环境11
- 2.1.3Turbo C 3.0开发演习14
- 2.2在Windows环境下开发C程序15
- 2.2.1Visual Studio 2010介绍15
- 2.2.2安装Visual Studio 201015
- 2.2.3认识Visual Studio 2010开发环境17
- 2.3在Linux下开发C程序18
- 2.3.1装备GCC18
- 2.3.2GCC基本使用介绍20
- 2.4技术解惑22
- 2.4.1安装Visual Studio的几个常见问题22
- 2.4.2有没有轻量级的、可以复制和粘贴代码的工具22
- 2.4.3Windows7中安装Visual Studio的常见问题22
- 第3章算法——抓住程序的灵魂23
- (视频总计25分钟,技术解惑2个)
- 3.1我们对算法的理解24
- 3.1.1为什么是程序灵魂24
- 3.1.2何谓算法24
- 3.1.3算法的特性25
- 3.2算法表示法——流程图26
- 3.3用计算机语言表示算法27
- 3.4技术解惑27
- 3.4.1初学者的一个困惑27
- 3.4.2另外一种表示方法——N—S流程图28
- 第4章程序员的基本素质培养29
- (视频总计15分钟,技术解惑1个)
- 4.1养成好的命名习惯30
- 4.2C程序文件结构30
- 4.2.1C程序组成部分30
- 4.2.2C程序格式总结31
- 4.3养成好的C语言编程风格32
- 4.3.1随时使用缩进格式32
- 4.3.2注意大符号的位置32
- 4.3.3函数的规则33
- 4.3.4注意注释33
- 4.4如何成为一名优秀的程序员33
- 4.5技术解惑35
- 第5章C语言语法36
- (视频总计23分钟,实例5个,拓展实例10个,技术解惑4个)
- 5.1标识符和关键字37
- 5.2最基本的数据类型37
- 5.3常量和变量的深入理解38
- 5.3.1常量详解39
- 5.3.2变量详解40
- 5.4整型数据42
- 5.4.1整型常量详解42
- 5.4.2整型变量详解44
- 5.5实型数据46
- 5.5.1实型常量详解46
- 5.5.2实型变量详解46
- 5.5.3了解实型常量的类型48
- 5.6字符型数据48
- 5.6.1字符常量详解49
- 5.6.2字符串常量详解50
- 5.6.3字符变量详解51
- 5.7初始化变量52
- 5.8整型、实型和字符型数据间的运算总结53
- 5.8.1自动转换53
- 5.8.2强制转换54
- 5.9技术解惑54
- 5.9.1C语言中无符号整型变量和有符号整型变量指什么?54
- 5.9.2C语言中字符变量是怎么回事55
- 5.9.3怎么理解字符型数据取值范围为0~25555
- 5.9.4怎样将带小数点的字符型数据转换成浮点型的55
- 第6章运算符和表达式56
- (视频总计29分钟,实例8个,拓展实例16个,技术解惑5个)
- 6.1运算符和表达式的基本概况57
- 6.1.1先看运算符的种类57
- 6.1.2再看运算符的优先级58
- 6.2算术运算符和算术表达式详解59
- 6.2.1单目运算符59
- 6.2.2双目运算符60
- 6.3赋值运算符和赋值表达式60
- 6.3.1基本赋值运算符61
- 6.3.2复合赋值运算符61
- 6.3.3赋值表达式62
- 6.4关系运算符和关系表达式详解63
- 6.4.1关系运算符63
- 6.4.2关系表达式63
- 6.5逻辑运算符和逻辑表达式详解64
- 6.5.1逻辑运算符64
- 6.5.2逻辑表达式64
- 6.6逗号运算符和逗号表达式详解66
- 6.6.1逗号运算符66
- 6.6.2逗号表达式66
- 6.7求字节数运算符详解67
- 6.8技术解惑68
- 6.8.1C语言运算符优先级的详细情况68
- 6.8.2有少数运算符有规定表达式求值的顺序70
- 6.8.3在C语言中可以进行混合运算吗70
- 6.8.4在一个逻辑条件语句中常数项永远在左侧70
- 6.8.5赋值处理的自动类型转换70
- 第7章输入和输出72
- (视频总计25分钟,实例7个,拓展实例14个,技术解惑3个)
- 7.1先来了解C语句初步73
- 7.1.1C语句简介73
- 7.1.2赋值语句74
- 7.2打通任督二脉——数据输入和输出详解75
- 7.2.1putchar函数(字符输出函数)76
- 7.2.2getchar函数(字符输入函数)77
- 7.2.3printf函数(格式输出函数)78
- 7.2.4scanf函数(格式输入函数)81
- 7.2.5puts函数(字符串输出函数)84
- 7.2.6gets函数(字符串输入函数)84
- 7.3技术解惑85
- 7.3.1gets函数和scanf函数的区别85
- 7.3.2克服gets函数的缺陷85
- 7.3.3一个C语言的输入和输出问题87
- 第8章流程控制88
- (视频总计32分钟,实例8个,拓展实例16个,技术解惑3个)
- 8.1最常见的顺序结构89
- 8.2选择结构89
- 8.2.1单分支结构语句90
- 8.2.2双分支结构语句91
- 8.2.3还要使用多分支结构语句94
- 8.2.4条件运算符和条件表达式96
- 8.3循环结构详解97
- 8.3.1for语句循环98
- 8.3.2while语句99
- 8.3.3do—while语句101
- 8.3.4正确对待goto语句102
- 8.3.5break/continue跳跃103
- 8.3.6死循环/退出程序104
- 8.4技术解惑105
- 8.4.1循环中的低效问题105
- 8.4.2分析C语言循环语句的效率105
- 8.4.3使用for循环语句的注意事项106
- 第9章数组和字符串——数据存在形式107
- (视频总计49分钟,实例13个,拓展实例26个,技术解惑4个)
- 9.1一维数组108
- 9.1.1定义一维数组108
- 9.1.2引用一维数组元素108
- 9.1.3初始化一维数组109
- 9.2多维数组110
- 9.2.1二维数组110
- 9.2.2多维数组113
- 9.3字符数组与字符串115
- 9.3.1字符数组116
- 9.3.2字符串与字符数组116
- 9.3.3字符数组的输入和输出117
- 9.4字符串处理函数119
- 9.4.1测试字符串长度函数119
- 9.4.2字符串大小写转换函数119
- 9.4.3字符串复制函数120
- 9.4.4字符串比较函数121
- 9.4.5字符串连接函数123
- 9.4.6其他的字符串函数124
- 9.4.7将字符串转换成数值的函数124
- 9.5字符处理函数125
- 9.5.1字符检测函数详解125
- 9.5.2字符大小写转换函数详解127
- 9.6技术解惑128
- 9.6.1数组的下标总是从0开始吗128
- 9.6.2C语言对数组的处理是非常有效的吗128
- 9.6.3初始化赋值一维数组的注意事项129
- 9.6.4冒泡排序129
- 第10章函数——C语言的CPU130
- (视频总计65分钟,实例14个,拓展实例28个,技术解惑10个)
- 10.1C语言函数的基础知识131
- 10.1.1函数的分类131
- 10.1.2函数的定义132
- 10.2必须知道的函数声明和函数原型133
- 10.3函数的参数135
- 10.3.1形参和实参详解135
- 10.3.2可以将数组名作为函数参数136
- 10.3.3可以将数组作为函数参数138
- 10.4函数的返回值140
- 10.5怎样实现函数的调用142
- 10.5.1函数的调用格式142
- 10.5.2函数调用的方式142
- 10.5.3被调函数的声明方式144
- 10.5.4对调用函数的方式进行深入分析144
- 10.6函数的嵌套调用和递归调用146
- 10.6.1函数嵌套调用详解146
- 10.6.2函数递归调用详解148
- 10.7必须了解变量的作用域和生存期151
- 10.7.1变量作用域详解151
- 10.7.2静态存储变量和动态存储变量153
- 10.8谈谈C的内部函数和外部函数159
- 10.8.1内部函数详解159
- 10.8.2外部函数详解160
- 10.9必须知道的库函数161
- 10.10技术解惑162
- 10.10.1深入分析项目文件162
- 10.10.2要尽量避免不必要的函数调用164
- 10.10.3请确保声明和定义是静态的,除非希望从不同的文件中调用该函数164
- 10.10.4避免过长的main(函数)164
- 10.10.5函数的地址本身也是数据166
- 10.10.6什么时候说明函数167
- 10.10.7一个函数可以有多少个参数168
- 10.10.8如果一个函数没有返回值,是否需要加入return语句168
- 10.10.9在程序退出main函数之后还有可能执行一部分代码168
- 10.10.10exit()函数和return语句有什么不同169
- 第11章指针是学习C语言的最大障碍170
- (视频总计61分钟,实例14个,拓展实例28个,技术解惑8个)
- 11.1基本概念171
- 11.2变量的指针和指向变量的指针变量171
- 11.2.1声明指针变量172
- 11.2.2指针变量的初始化172
- 11.2.3指针变量的引用173
- 11.2.4关于指针运算符的说明174
- 11.2.5指针变量的运算175
- 11.2.6指针变量作为函数参数176
- 11.2.7void类型的指针179
- 11.3指针和数组180
- 11.3.1数组元素的指针181
- 11.3.2指向一维数组元素的指针变量182
- 11.3.3通过指针引用数组元素182
- 11.3.4数组名作函数参数185
- 11.4指针和多维数组187
- 11.4.1多维数组的地址187
- 11.4.2指向多维数组的指针变量189
- 11.5指针和字符串192
- 11.5.1指针访问字符串192
- 11.5.2字符串指针作函数参数193
- 11.5.3使用字符串指针变量与字符数组的区别194
- 11.6指针数组和多级指针195
- 11.6.1指针数组195
- 11.6.2多级指针的定义和应用196
- 11.6.3指向指针的指针198
- 11.6.4main函数的参数198
- 11.7指针函数和函数指针199
- 11.7.1指针函数199
- 11.7.2函数指针200
- 11.8技术解惑202
- 11.8.1指针初始化时应注意的问题202
- 11.8.2指针赋值时应注意的问题203
- 11.8.3指针用于数组时应注意的问题204
- 11.8.4结构中使用指针时应注意的问题204
- 11.8.5避免不必要的内存引用205
- 11.8.6避免悬空指针和野指针205
- 11.8.7数组下标与指针的效率解析205
- 11.8.8使用指针时的常见错误206
- 第12章数据的熔炉——结构体、共用体和枚举208
- (视频总计49分钟,实例12个,拓展实例24个,技术解惑4个)
- 12.1结构体209
- 12.1.1定义结构体类型209
- 12.1.2定义结构体类型变量209
- 12.1.3引用结构体变量211
- 12.1.4初始化结构体变量213
- 12.2进一步谈结构体数组214
- 12.2.1定义结构体数组214
- 12.2.2初始化结构体数组215
- 12.2.3引用结构体数组216
- 12.3详谈结构体指针217
- 12.3.1定义结构体指针变量217
- 12.3.2初始化结构体指针变量218
- 12.3.3引用结构体指针变量218
- 12.3.4指向结构变量的指针219
- 12.3.5指向结构体数组的指针220
- 12.4在函数中使用结构体220
- 12.4.1结构体变量和结构体指针可以作为函数参数221
- 12.4.2函数可以返回结构体类型的值222
- 12.5共用体(联合)223
- 12.5.1定义共用体和共用体变量223
- 12.5.2引用和初始化共用体变量224
- 12.6枚举225
- 12.6.1定义枚举类型225
- 12.6.2定义枚举变量226
- 12.6.3引用枚举变量227
- 12.7为什么需要用typedef定义类型228
- 12.7.1类型定义符typedef基础228
- 12.7.2使用typedef229
- 12.8技术解惑230
- 12.8.1可以省略结构名吗230
- 12.8.2是否可以定义一种通用数据类型方便地存储任意类型的数据呢230
- 12.8.3分析结构和共用体的区别231
- 12.8.4一个定义C结构体的问题231
- 第13章链表232
- (视频总计25分钟,实例4个,拓展实例8个,技术解惑3个)
- 13.1动态内存分配233
- 13.1.1为什么用动态内存分配233
- 13.1.2如何实现动态内存分配及其管理233
- 13.2链表详解236
- 13.2.1链表基本介绍236
- 13.2.2单向链表237
- 13.2.3创建一个链表239
- 13.2.4删除整个链表240
- 13.2.5在链表中插入节点240
- 13.2.6在链表中删除节点241
- 13.2.7双向链表242
- 13.2.8循环链表243
- 13.3技术解惑244
- 13.3.1一段代码对链表的总结244
- 13.3.2面试题—判断单链表是否有环248
- 13.3.3面试题—实现单链表逆置248
- 第14章位运算250
- (视频总计22分钟,实例2个,拓展实例4个,技术解惑3个)
- 14.1位运算符和位运算251
- 14.1.1按位与运算(&)251
- 14.1.2按位或运算252
- 14.1.3按位异或运算252
- 14.1.4取反运算253
- 14.1.5左移运算253
- 14.1.6右移运算254
- 14.1.7位运算应用实例254
- 14.2位域256
- 14.2.1位域的定义和位域变量的说明256
- 14.2.2位域的使用257
- 14.3技术解惑257
- 14.3.1二进制补码运算公式257
- 14.3.2面试题:从某个数中取出指定的某些位258
- 14.3.3位域的内存对齐原则258
- 第15章预编译处理259
- (视频总计27分钟,实例3个,拓展实例6个,技术解惑6个)
- 15.1预编译基础260
- 15.2宏定义260
- 15.2.1不带参数的宏定义260
- 15.2.2带参数的宏定义262
- 15.2.3字符串化运算符264
- 15.2.4并接运算符264
- 15.3文件包含详解265
- 15.4条件编译267
- 15.4.1#ifdef…#else…#endif命令267
- 15.4.2#ifdefined…#else…#endif268
- 15.4.3#ifndef…#else…#endif268
- 15.4.4#if!defined…#else…#endif268
- 15.4.5#ifdef…#elif…#elif…#else…#endif269
- 15.5技术解惑270
- 15.5.1还有其他预编译指令吗270
- 15.5.2带参的宏定义和函数不同271
- 15.5.3总结C语言中的预处理指令271
- 15.5.4预编译指令的本质是什么271
- 15.5.5sizeof(int)在预编译阶段是不会被求值的272
- 15.5.6多行预处理指令的写法272
- 第16章文件操作273
- (视频总计56分钟,实例14个,拓展实例28个,技术解惑5个)
- 16.1C领域中的文件274
- 16.1.1文本文件274
- 16.1.2文件分类275
- 16.2文件指针275
- 16.3实现文件打开与关闭276
- 16.3.1打开文件276
- 16.3.2关闭文件278
- 16.4文件读写详解279
- 16.4.1字符读写函数280
- 16.4.2字符串读写函数282
- 16.4.3格式化读写函数283
- 16.4.4数据块读写函数284
- 16.4.5其他的读写函数286
- 16.5必须掌握文件的随机读写287
- 16.5.1fseek函数详解287
- 16.5.2rewind函数详解289
- 16.5.3ftell函数详解289
- 16.6文件管理函数详解290
- 16.6.1删除文件290
- 16.6.2重命名文件291
- 16.6.3复制文件291
- 16.7文件状态检测函数详解293
- 16.7.1feof函数详解293
- 16.7.2ferror函数详解293
- 16.7.3clearerr函数详解294
- 16.8Win32API中的文件操作函数294
- 16.8.1创建和打开文件295
- 16.8.2读取、写入和删除文件295
- 16.9技术解惑296
- 16.9.1文件指针和文件内部的位置指针是一个含义吗296
- 16.9.2fseek函数的换行问题296
- 16.9.3怎样解决gets函数的溢出问题296
- 16.9.4feof函数会多读一个数据吗297
- 16.9.5流和文件有何关系297
- 第17章错误和程序调试298
- (视频总计9分钟,技术解惑3个)
- 17.1常见错误分析299
- 17.1.1语法错误299
- 17.1.2逻辑错误(语义错误)300
- 17.1.3内存错误303
- 17.2错误的检出与分离308
- 17.3调试时的注意事项309
- 17.3.1上机前要先熟悉程序运行的环境309
- 17.3.2程序设计过程中要为程序调试做好准备309
- 17.4技术解惑310
- 17.4.1编译通过并不代表运行正确310
- 17.4.2两段代码的编译差别310
- 17.4.3调试程序的方法与技巧310
- 第18章组件技术313
- (视频总计19分钟)
- 18.1组件技术概述314
- 18.2体系结构314
- 18.2.1体系结构的概念314
- 18.2.2CORBA技术体系315
- 18.2.3DCOM技术319
- 第19章C语言高级编程技术322
- (视频总计33分钟,实例12个,拓展实例8个)
- 19.1何谓C的高级编程技术323
- 19.2分析文本的屏幕输出和键盘输入323
- 19.2.1实现文本的屏幕输出323
- 19.2.2实现键盘输入329
- 19.2.3应用实例330
- 19.3分析图形显示方式和鼠标输入332
- 19.3.1初始化图形模式332
- 19.3.2清屏和恢复显示函数详解334
- 19.3.3建立独立图形运行程序335
- 19.3.4基本绘图函数详解335
- 19.3.5线性函数详解339
- 19.3.6颜色控制函数详解340
- 19.3.7分析填色函数和画图函数344
- 19.3.8图形窗口函数详解347
- 19.3.9分析图形方式下的文本输出函数347
- 19.4菜单设计350
- 19.4.1实现下拉式菜单350
- 19.4.2实现弹出式菜单353
- 第20章网络编程技术358
- (视频总计33分钟,实例3个,拓展实例2个)
- 20.1OSI七层网络模型359
- 20.2TCP/IP子协议360
- 20.2.1IP协议361
- 20.2.2TCP协议362
- 20.2.3UDP协议363
- 20.2.4ICMP协议363
- 20.3使用C语言开发网络项目363
- 20.3.1网络编程方式364
- 20.3.2网络通信基本流程364
- 20.3.3搭建开发环境365
- 20.3.4两个常用的数据结构365
- 20.3.5WindowsSockets基础365
- 20.4常用的Winsock函数366
- 20.4.1WSAStartup函数366
- 20.4.2socket函数366
- 20.4.3inet_addr函数367
- 20.4.4gethostbyname函数367
- 20.4.5bind函数367
- 20.4.6connect函数367
- 20.4.7select函数367
- 20.4.8recv函数368
- 20.4.9sendto函数368
- 20.5MAC地址368
- 20.6NetBIOS编程369
- 20.6.1处理过程369
- 20.6.2NetBIOS命令369
- 20.6.3NetBIOS名字解析370
- 20.6.4何谓NetBEUI372
- 20.6.5NetBIOS范围373
- 20.6.6NetBios控制块373
- 20.7实战演练——获取当前机器MAC地址373
- 20.7.1选择开发工具373
- 20.7.2设计MFC窗体373
- 20.7.3具体编码374
- 第21章初入江湖——游戏项目设计381
- (视频总计45分钟)
- 21.1游戏功能描述382
- 21.2游戏总体设计382
- 21.2.1功能模块设计383
- 21.2.2数据结构设计385
- 21.2.3构成函数介绍386
- 21.3游戏具体实现387
- 21.3.1预处理387
- 21.3.2主函数389
- 21.3.3初始化界面处理390
- 21.3.4时钟中断处理391
- 21.3.5成绩、速度和帮助处理391
- 21.3.6满行处理392
- 21.3.7方块显示和消除处理394
- 21.3.8游戏方块操作判断处理395
- 第22章风云再起——网络项目设计398
- (视频总计28分钟)
- 22.1系统功能描述399
- 22.2系统总体设计399
- 22.2.1功能模块设计399
- 22.2.2数据结构设计401
- 22.2.3构成函数介绍402
- 22.3系统具体实现403
- 22.3.1预处理403
- 22.3.2初始化处理404
- 22.3.3控制模块405
- 22.3.4数据报解读处理406
- 22.3.5Ping测试处理408
- 22.3.6主函数409