-
内容大纲
本书以“学完C语言之后知道能做什么”为编写目标,共12章:LinuxC语言程序设计、C语言基础Ⅰ、C语言基础Ⅱ、编译与调试、链表、C标准库、Linux系统调用、Socket编程、Linux函数库和进程地址空间、Pthreads编程、GTK图形界面编程、Linux内核编程。其中,C语言基础Ⅰ、C语言基础Ⅱ、C标准库与Linux系统调用为本书最基础、最重要的4章,全面介绍了标准C的基本语法和Linux系统调用编程。其他章节告诉读者C语言具体能做什么。
本书可作为高等学校各专业的“C语言程序设计”课程教材,也可作为从事计算机相关工作的科技人员、计算机爱好者及各类自学人员的参考书。 -
作者介绍
张同光 计算机博士,副教授。讲授计算机专业课程20余门,发表SCI、EI等学术论文30余篇,主编教材近20部,主持或参与省部级以上项目6个。对Linux操作系统有深入全面的研究。使用C/C++等语言开发过若干横向项目。钻研和应用计算机技术是最大的爱好。 -
目录
第1章 Linux C语言程序设计
1.1 C语言
1.1.1 C语言简介
1.1.2 C语言的发展历史
1.1.3 C语言的特点
1.2 Linux概述
1.3 Linux C语言程序设计简介
1.3.1 Linux应用编程、系统编程和内核编程
1.3.2 Linux图形界面编程
1.4 Linux C语言编程环境
1.4.1 Ubuntu Linux虚拟机
1.4.2 gedit、vim和nano
1.4.3 C语言编译器及集成开发环境
1.4.4 Hello World程序
1.5 习题
第2章 C语言基础Ⅰ
2.1 数据
2.1.1 数据类型
2.1.2 常量
2.1.3 变量和标识符
2.1.4 数据类型转换
2.1.5 转义字符(转义序列)
2.2 运算符
2.2.1 运算符和表达式
2.2.2 算术运算
2.2.3 赋值运算
2.2.4 关系运算
2.2.5 逻辑运算符
2.2.6 条件运算符
2.2.7 逗号运算符
2.2.8 sizeof运算符与typedef类型声明
2.2.9 位运算
2.2.10 复合赋值运算符
2.3 结构化程序设计
2.3.1 顺序结构
2.3.2 分支结构
2.3.3 循环结构
2.4 输入/输出
2.4.1 标准输出函数printf
2.4.2 标准输入函数scanf
2.5 数组
2.5.1 一维数组
2.5.2 二维数组
2.5.3 一维字符数组
2.5.4 一维字符数组的输入/输出
2.5.5 字符串处理函数
2.5.6 二维字符数组
2.6 习题
第3章 C语言基础Ⅱ
3.1 函数
3.1.1 C语言库函数
3.1.2 函数定义和声明
3.1.3 函数调用及参数传递
3.1.4 函数的嵌套与递归
3.1.5 回调函数
3.1.6 return语句
3.1.7 全局变量、局部变量和作用域
3.1.8 变量的存储类别及生存期
3.1.9 内部函数和外部函数
3.2 预处理
3.2.1 预处理的步骤
3.2.2 宏定义和内联函数
3.2.3 条件编译
3.2.4 文件包含
3.3 指针
3.3.1 指针的基本运算
3.3.2 指针与数组
3.3.3 指针与const限定符
3.3.4 指针与字符串
3.3.5 指针函数与函数指针
3.3.6 再讲回调函数
3.3.7 可变参数
3.3.8 二级指针与多级指针
3.3.9 指针数组和数组指针
3.3.10 动态内存管理
3.4 结构体、共用体和枚举
3.4.1 结构体
3.4.2 位域
3.4.3 共用体
3.4.4 枚举
3.5 零长数组、变长数组和动态数组
3.6 编码风格与缩进工具indent
3.7 习题
第4章 编译与调试
4.1 gcc、make、Makefile、cmake和CMakeLists.txt
4.1.1 gcc
4.1.2 make和Makefile
4.1.3 cmake和CMakeLists.txt
4.2 完整的编译过程
4.3 调试程序
4.3.1 调试(Debug)和GDB
4.3.2 测试用例
4.3.3 GDB启动程序
4.3.4 断点
4.3.5 观察点
4.3.6 捕捉点
4.3.7 信号
4.3.8 单步调试
4.3.9 打印输出
4.3.10 函数栈帧
4.3.11 TUI窗口
4.3.12 函数跳转
4.3.13 段错误
4.3.14 coredump
4.3.15 调试正在运行的程序
4.3.16 调试多进程和多线程
4.3.17 gdb使用示例
4.4 习题
第5章 链表
5.1 单向链表
5.1.1 单链表结构与链表结点类型
5.1.2 创建单链表
5.1.3 插入结点
5.1.4 删除结点
5.1.5 读取结点
5.1.6 查找结点
5.1.7 打印单链表
5.1.8 逆转单链表
5.1.9 构建单向循环链表
5.1.10 销毁单链表
5.1.11 主函数及测试结果
5.2 双向链表
5.2.1 双链表结构与链表结点类型
5.2.2 创建双链表
5.2.3 插入结点
5.2.4 删除结点
5.2.5 读取结点
5.2.6 查找结点
5.2.7 打印双链表
5.2.8 逆转双链表
5.2.9 构建双向循环链表
5.2.10 销毁双向循环链表
5.2.11 主函数及测试结果
5.3 内核链表
5.3.1 list_head
5.3.2 offsetof、container_of和list_entry
5.3.3 链表初始化
5.3.4 插入结点
5.3.5 删除结点
5.3.6 替换结点
5.3.7 移动结点
5.3.8 判断函数
5.3.9 合并结点
5.3.10 遍历链表
5.3.11 用户空间使用内核链表
5.4 习题
第6章 C标准库
6.1 C语言标准和glibc
6.2 标准输入/输出函数库
6.2.1 fopen/fclose
6.2.2 stdin/stdout/stderr
6.2.3 errno与perror函数
6.2.4 以字节为单位的I/O函数
6.2.5 以字符串为单位的I/O函数
6.2.6 以记录为单位的I/O函数
6.2.7 格式化读写文件
6.2.8 操作读写位置的函数
6.2.9 FILE结构体及I/O缓冲区
6.3 标准工具函数库
6.3.1 动态内存分配与释放
6.3.2 整数算术
6.3.3 随机数
6.3.4 数值字符串转换
6.3.5 宽字符和多字节字符转换
6.4 字符串处理函数库
6.4.1 内存赋值
6.4.2 取字符串的长度
6.4.3 复制字符串
6.4.4 比较字符串
6.4.5 搜索字符串
6.4.6 连接字符串
6.4.7 分割字符串
6.4.8 本地函数
6.5 字符处理函数库
6.6 数学函数库
6.7 学生信息管理系统的设计与实现
6.7.1 系统设计要求
6.7.2 系统设计
6.7.3 函数设计
6.7.4 参考程序
6.7.5 运行结果
6.8 习题
第7章 Linux系统调用
7.1 C库函数和Linux系统调用
7.2 Linux中使用系统调用的三种方法
7.2.1 通过glibc封装的库函数
7.2.2 使用syscall直接调用
7.2.3 通过CPU指令调用
7.3 Linux系统调用编程: 进程管理
7.4 Linux系统调用编程: 进程间通信
7.5 Linux系统调用编程: exec函数族
7.6 Linux系统调用编程: 文件管理
7.7 习题
第8章 Socket编程
8.1 Socket基本概念
8.1.1 Socket是什么
8.1.2 主机字节序与网络字节序
8.1.3 Socket地址结构
8.1.4 地址转换函数
8.1.5 C/S架构
8.2 Socket相关函数
8.2.1 socket函数
8.2.2 bind函数
8.2.3 listen/connect函数
8.2.4 accept函数
8.2.5 网络I/O函数
8.2.6 close函数
8.2.7 getsockopt和setsockopt函数
8.2.8 select函数
8.2.9 poll函数
8.2.10 epoll函数
8.3 基于TCP的网络程序
8.3.1 简单C/S应用程序的设计
8.3.2 交互式C/S应用程序的设计
8.3.3 简单聊天室应用程序的设计(select)
8.3.4 聊天室应用程序的设计(select)
8.3.5 简单C/S应用程序的设计(epoll)
8.4 基于UDP的网络程序
8.4.1 简单C/S应用程序的设计
8.4.2 简单聊天室应用程序的设计
8.5 原始套接字编程
8.6 UNIX Domain Socket
8.7 习题
第9章 Linux函数库和进程地址空间
9.1 静态库和共享库
9.2 函数库的制作和使用
9.2.1 静态库的制作和使用
9.2.2 共享库的制作和使用
9.3 显式链接共享库
9.4 进程地址空间
9.4.13 2位系统的进程地址空间
9.4.26 4位系统的进程地址空间
9.4.3 查看进程地址空间
9.4.4 编程验证进程地址空间布局
9.5 动态链接过程
9.5.1 ELF文件格式
9.5.2 加载解释器
9.5.3 运行解释器
9.6 习题
第10章 Pthreads编程
10.1 Pthreads概述
10.1.1 Linux进程和线程
10.1.2 Linux线程模型
10.1.3 Pthreads简介
10.2 Pthreads函数
10.2.1 创建线程
10.2.2 终止线程
10.2.3 线程的结合和分离
10.2.4 线程属性
10.2.5 自动清理线程资源
10.2.6 线程同步与互斥
10.3 Pthreads编程示例
10.3.1 读者写者
10.3.2 生产者消费者
10.3.3 哲学家就餐
10.4 习题
第11章 GTK图形界面编程
11.1 GTK概述
11.2 GLib概述
11.3 信号和回调函数
11.4 GTK控件
11.4.1 非容器控件
11.4.2 容器控件
11.5 GTK图形界面编程
11.5.1 Hello World
11.5.2 GtkGrid
11.5.3 Custom Drawing
11.5.4 GtkBuilder创建界面
11.5.5 Cambalache
11.6 GTK图形界面聊天室
11.6.1 聊天室服务器端
11.6.2 聊天室客户端
11.6.3 测试
11.7 习题
第12章 Linux内核编程
12.1 Linux内核编程概念
12.2 LKM编程: Hello World
12.2.1 LKM签名验证
12.2.2 Hello World模块的编写和运行
12.2.3 模块参数和模块导出符号
12.3 Linux驱动程序设计
12.3.1 Linux驱动程序简介
12.3.2 字符设备驱动程序
12.3.3 虚拟网卡驱动程序
12.4 习题
附录A ASCII码表
附录B 资源及学习网站
参考文献
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...