好书推荐 好书速递 排行榜 读书文摘

一站式学习C编程

一站式学习C编程
作者:宋劲杉
出版社:电子工业出版社
出版年:2011-03
ISBN:9787121129827
行业:计算机
浏览数:46

内容简介

《一站式学习c编程》有两条线索,一条线索是以linux平台为载体全面深入地介绍c语言的语法和程序的工作原理,另一条线索是介绍程序设计的基本思想和开发调试方法。本书分为两部分:第一部分讲解编程语言和程序设计的基本思想方法,让读者从概念上认识c语言;第二部分结合操作系统和体系结构的知识讲解程序的工作原理,让读者从本质上认识c语言。

《一站式学习c编程》适合做零基础的初学者学习c语言的第一本教材,帮助读者打下牢固的基础。有一定的编程经验但知识体系不够完整的读者也可以对照本书查缺补漏,从而更深入地理解程序的工作原理。《一站式学习c编程》最初是为北京亚嵌教育研究中心的嵌入式linux系统工程师就业班课程量身定做的教材之一,也适合作为高等院校程序设计基础课程的教材。本书对于c语言的语法介绍得非常全面,对c99标准做了很多解读,因此也可以作为一本精简的c语言语法参 考书。

......(更多)

作者简介

宋劲杉,亚嵌教育资深讲师,清华大学自动化系硕士,6年嵌入式系统开发经验,3年嵌入式行业教学经验,精通Linux内核、POSIX、TCP/IP,擅长ARM平台的Linux系统移植和应用开发,目前关注的方向有分布式系统、动态语言。爱好:开源软件、电子音乐、HomeParty

......(更多)

目录

《一站式学习c编程》

上篇 c语言入门

第1章 程序的基本概念 2

1.1 程序和编程语言 2

1.2 自然语言和形式语言 6

1.3 程序的调试 8

1.4 第一个程序 9

第2章 常量、变量和表达式 13

2.1 继续hello world 13

2.2 常量 16

2.3 变量 17

2.4 赋值 19

2.5 表达式 20

2.6 字符类型与字符编码 24

第3章 简单函数 26

3.1 数学函数 26

3.2 自定义函数 28

3.3 形参和实参 34

3.4 全局变量、局部变量和作用域 38

第4章 分支语句 44

.4.1 if语句 44

4.2 if/else语句 46

4.3 布尔代数 48

4.4 switch语句 52

第5章 深入理解函数 54

5.1 return语句 54

5.2 增量式开发 57

5.3 递归 61

第6章 循环语句 67

6.1 while语句 67

6.2 do/while语句 69

6.3 for语句 70

6.4 break和continue语句 72

6.5 嵌套循环 73

6.6 goto语句和标号 74

第7章 结构体 78

7.1 复合类型与结构体 78

7.2 数据抽象 82

7.3 数据类型标志 86

7.4 嵌套结构体 87

第8章 数组 89

8.1 数组的基本概念 89

8.2 数组应用实例:统计随机数 92

8.3 数组应用实例:直方图 95

8.4 字符串 98

8.5 多维数组 100

第9章 编码风格 104

9.1 缩进和空白 104

9.2 注释 108

9.3 标识符命名 112

9.4 函数 112

9.5 indent工具 113

第10章 gdb 115

10.1 单步执行和跟踪函数调用 115

10.2 断点 122

10.3 观察点 126

10.4 段错误 130

第11章 排序与查找 133

11.1 算法的概念 133

11.2 插入排序 134

11.3 算法的时间复杂度分析 136

11.4 归并排序 138

11.5 线性查找 143

11.6 折半查找 144

第12章 栈与队列 149

12.1 数据结构的概念 149

12.2 堆栈 149

12.3 深度优先搜索 151

12.4 队列与广度优先搜索 157

12.5 环形队列 162

本阶段总结 163

下篇 c语言本质

第13章 计算机中数的表示 166

13.1 为什么计算机用二进制计数 166

13.2 不同进制之间的换算 168

13.3 整数的加减运算 170

13.3.1 sign and magnitude表示法 170

13.3.2 1's complement表示法 170

13.3.3 2's complement表示法 172

13.3.4 有符号数和无符号数 173

13.4 浮点数 173

第14章 数据类型详解 176

14.1 整型 176

14.2 浮点型 180

14.3 类型转换 181

14.3.1 integer promotion 181

14.3.2 usual arithmetic conversion 182

14.3.3 由赋值产生的类型转换 183

14.3.4 强制类型转换 183

14.3.5 编译器如何处理类型转换 184

第15章 运算符详解 186

15.1 位运算 186

15.1.1 按位与、或、异或、取反运算 186

15.1.2 移位运算 187

15.1.3 掩码 188

15.1.4 异或运算的一些特性 189

15.2 其他运算符 190

15.2.1 复合赋值运算符 190

15.2.2 条件运算符 190

15.2.3 逗号运算符 191

15.2.4 sizeof运算符与typedef类型声明 191

15.3 side effect与sequence point 193

15.4 运算符总结 196

第16章 计算机体系结构基础 198

16.1 内存与地址 198

16.2 cpu 198

16.3 设备 201

16.4 mmu 203

16.5 memory hierarchy 205

第17章 x86汇编程序基础 209

17.1 最简单的汇编程序 209

17.2 x86的寄存器 212

17.3 第二个汇编程序 212

17.4 寻址方式 215

17.5 elf文件 216

17.5.1 目标文件 217

17.5.2 可执行文件 223

第18章 汇编与c之间的关系 229

18.1 函数调用 229

18.2 main函数、启动例程和退出状态 236

18.3 变量的存储布局 242

18.4 结构体和联合体 249

18.5 c内联汇编 254

18.6 volatile限定符 255

第19章 链接详解 260

19.1 多目标文件的链接 260

19.2 定义和声明 266

19.2.1 extern和static关键字 266

19.2.2 头文件 269

19.2.3 定义和声明的详细规则 274

19.3 静态库 276

19.4 共享库 279

19.4.1 编译、链接、运行 279

19.4.2 函数的动态链接过程 286

19.4.3 共享库的命名惯例 288

19.5 虚拟内存管理 290

第20章 预处理 296

20.1 预处理的步骤 296

20.2 宏定义 297

20.2.1 函数式宏定义 297

20.2.2 内联函数 300

20.2.3 #、##运算符和可变参数 301

20.2.4 #undef预处理指示 304

20.2.5 宏展开的步骤 304

20.3 条件预处理指示 305

20.4 其他预处理特性 309

第21章 makefile基础 312

21.1 基本规则 312

21.2 隐含规则和模式规则 319

21.3 变量 322

21.4 自动处理头文件的依赖关系 327

21.5 常用的make命令行选项 331

第22章 指针 334

22.1 指针的基本概念 334

22.2 指针类型的参数和返回值 337

22.3 指针与数组 339

22.4 指针与const限定符 342

22.5 指针与结构体 344

22.6 指向指针的指针与指针数组 344

22.7 指向数组的指针与多维数组 348

22.8 函数类型和函数指针类型 349

22.9 不完全类型和复杂声明 353

第23章 函数接口 357

23.1 本章的预备知识 357

23.1.1 strcpy与strncpy 357

23.1.2 malloc与free 362

23.2 传入参数与传出参数 367

23.3 两层指针的参数 368

23.4 返回值是指针的情况 370

23.5 回调函数 373

23.6 可变参数 376

第24章 c标准库 380

24.1 字符串操作函数 381

24.1.1 给字符串赋初值 381

24.1.2 取字符串的长度 382

24.1.3 拷贝字符串 383

24.1.4 连接字符串 385

24.1.5 比较字符串 386

24.1.6 搜索字符串 387

24.1.7 分割字符串 387

24.2 标准i/o库函数 391

24.2.1 文件的基本概念 391

24.2.2 fopen/fclose 392

24.2.3 stdin/stdout/stderr 395

24.2.4 errno与perror/strerror函数 396

24.2.5 以字节为单位的i/o函数 398

24.2.6 操作读写位置的函数 401

24.2.7 以字符串为单位的i/o函数 403

24.2.8 以记录为单位的i/o函数 404

24.2.9 格式化i/o函数 406

24.2.10 c标准库的i/o缓冲区 413

24.2.11 本节综合练习 417

24.3 数值字符串转换函数 418

24.4 分配内存的函数 420

第25章 链表、二叉树和哈希表 422

25.1 链表 422

25.1.1 单链表 422

25.1.2 双向链表 428

25.1.3 静态链表 433

25.1.4 本节综合练习 433

25.2 二叉树 434

25.2.1 二叉树的基本概念 434

25.2.2 排序二叉树 439

25.3 哈希表 443

本阶段总结 445

附录a 字符编码 449

参考文献 456

索引 458

......(更多)

读书文摘

尽管函数式宏定义和真正的函数相比有很多缺点,但只要小心使用还是会显著提高代码的执行效率,毕竟省去了分配和释放栈帧、传参、传返回值等一系列工作,因此那些简短并且被频繁调用的函数经常用函数式宏定义来代替实现。

......(更多)

猜你喜欢

点击查看