批量上传,套装书可能不全,下单前咨询在线客服! 正版书 !!!
¥ 51.74 7.4折 ¥ 69.8 全新
库存7件
作者张同光,田文强,荆春棋,田乔梅,陈明
出版社清华大学出版社
ISBN9787302638766
出版时间2023-08
装帧平装
开本16开
定价69.8元
货号29626822
上书时间2024-10-21
C语言是目前较为流行的高级程序设计语言之一,是许多计算机专业人员和计算机爱好者学习程序设计的首选语言。但是,很多学过C语言的读者在学习C语言之前以及学习过程中经常会问: “学习C语言能做什么?”学完C语言之后感慨道: “学完C语言之后仍然不知道能做什么”。其实,编者认为学习C语言有两个目标: 第一,为学习其他编程语言打下坚实的基础。因为计算机编程语言都是相通的,学好C语言再学习其他高级程序设计语言会很容易。这也是很多C语言教材能够达到的目标。所以,那些学完C语言之后仍然不知道能做什么的读者已经具备计算机编程基础了。本书的第2、3、6、7章可以达到该目标。第二,真正使用C语言开发有实际意义的程序。这正是本书所追求的目标。希望使用C语言开发有实际意义的程序,就要清楚目前C语言的真正应用场景。目前市面上绝大多数操作系统都是用C语言编写的。很多基础软件,如编译器、数据库、虚拟机、多媒体库、图形库等,也都是用C语言实现的。很多流行的编程语言也是用C语言实现的,如Lua、Python脚本语言等。在嵌入式系统开发中,比如固件、BSP、内核驱动等,除少量汇编代码,大部分都是用C语言开发的。互联网中的很多服务器程序也是用C语言开发的。总之,在整个计算机软件世界中,C语言发挥着中流砥柱的作用。读者可能对Linux不熟悉,但是,Linux早已深刻影响着我们生活的方方面面,从超级计算机、巨型机,到智能手机(Android),再到各种家电和嵌入式设备,内部都运行着Linux。另外,Linux支撑起了整个因特网。C语言和Linux操作系统有密不可分的血缘关系,因此本书的主要目标是帮助读者掌握基于Linux的各种软件的C语言开发方法,为读者以后步入广阔无垠的Linux世界打下坚实的基础。编者坚信Linux之父、天才程序员Linus Torvalds所说: “Talk is cheap, show me the code”。考虑到有些读者之前没有接触过Linux操作系统,因此,读者可以根据本书的第一个视频安装Linux虚拟机,搭建Linux C语言编程环境。
本书提供配套课件、教学大纲和习题参考答案等多种教学资源,还提供了94个微课视频,读者在学习过程中,扫描教学视频二维码可以观看视频。
本书由北京邮电大学计算机专业博士张同光担任主编,田文强、荆春棋、田乔梅、陈明担任副主编,参加编写的人员还有洪双喜、刘春红、秦建保。洪双喜和刘春红工作于河南师范大学,陈明工作于郑州轻工业大学,其他编者工作于新乡学院。其中,洪双喜和刘春红编写第1章,田文强、荆春棋和陈明共同编写第2~5章和附录A,张同光编写第6~10章,田乔梅编写第11章,秦建保编写第12章。全书由张同光(jsjoscpu@163.com)统稿和定稿。
本书得到河南省高等教育教学改革研究与实践重点项目(NO.2021SJGLX106)、河南省科技攻关项目(NO.202102210146)、网络与交换技术国家重点实验室开放课题(SKLNST2020101)以及高效能服务器和存储技术国家重点实验室的支持,在此表示感谢。
在本书的编写过程中,得到清华大学出版社的大力支持和帮助,在此表示衷心的感谢。
由于编者水平有限,书中欠妥之处,敬请广大读者批评指正。
编者
2023年6月
本书以“学完C语言之后知道能做什么”为编写目标,共12章: Linux C语言程序设计、C语言基础Ⅰ、C语言基础Ⅱ、编译与调试、链表、C标准库、Linux系统调用、Socket编程、Linux函数库和进程地址空间、Pthreads编程、GTK图形界面编程、Linux内核编程。其中,C语言基础Ⅰ、C语言基础Ⅱ、C标准库与Linux系统调用为本书最基础、最重要的4章,全面介绍了标准C的基本语法和Linux系统调用编程。其他章节告诉读者C语言具体能做什么。本书坚守“Talk is cheap, show me the code”信条,通过正确无误的示例代码向读者展示C语言的具体用法。本书内容注重实用,结构清晰,图文并茂,力求做到使读者感兴趣地学习Linux C语言编程。 本书可作为高等学校各专业的“C语言程序设计”课程教材,也可作为从事计算机相关工作的科技人员、计算机爱好者及各类自学人员的参考书。
第1章Linux C语言程序设计/1
1.1C语言/1
1.1.1C语言简介/1
1.1.2C语言的发展历史/2
1.1.3C语言的特点/2
1.2Linux概述/3
1.3Linux C语言程序设计简介/4
1.3.1Linux应用编程、系统编程和内核编程/4
1.3.2Linux图形界面编程/4
1.4Linux C语言编程环境/5
1.4.1Ubuntu Linux虚拟机/5
1.4.2gedit、vim和nano/5
1.4.3C语言编译器及集成开发环境/6
1.4.4Hello World程序/6
1.5习题/7
第2章C语言基础Ⅰ/9
2.1数据/9
2.1.1数据类型/9
2.1.2常量/11
2.1.3变量和标识符/13
2.1.4数据类型转换/14
2.1.5转义字符(转义序列)/15
2.2运算符/16
2.2.1运算符和表达式/16
2.2.2算术运算/18
2.2.3赋值运算/18
2.2.4关系运算/19
2.2.5逻辑运算符/19
2.2.6条件运算符/20
2.2.7逗号运算符/20
2.2.8sizeof运算符与typedef类型声明/21
2.2.9位运算/21
2.2.10复合赋值运算符/22
2.3结构化程序设计/23
2.3.1顺序结构/23
2.3.2分支结构/24
2.3.3循环结构/26
2.4输入/输出/29
2.4.1标准输出函数printf/30
2.4.2标准输入函数scanf/32
2.5数组/34
2.5.1一维数组/34
2.5.2二维数组/35
2.5.3一维字符数组/36
2.5.4一维字符数组的输入/输出/36
2.5.5字符串处理函数/37
2.5.6二维字符数组/39
2.6习题/40
第3章C语言基础II/44
3.1函数/44
3.1.1C语言库函数/44
3.1.2函数定义和声明/44
3.1.3函数调用及参数传递/46
3.1.4函数的嵌套与递归/49
3.1.5回调函数/50
3.1.6return语句/50
3.1.7全局变量、局部变量和作用域/51
3.1.8变量的存储类别及生存期/52
3.1.9内部函数和外部函数/54
3.2预处理/54
3.2.1预处理的步骤/54
3.2.2宏定义和内联函数/55
3.2.3条件编译/57
3.2.4文件包含/57
3.3指针/58
3.3.1指针的基本运算/58
3.3.2指针与数组/61
3.3.3指针与const限定符/64
3.3.4指针与字符串/65
3.3.5指针函数与函数指针/65
3.3.6再讲回调函数/66
3.3.7可变参数/67
3.3.8二级指针与多级指针/68
3.3.9指针数组和数组指针/69
3.3.10动态内存管理/70
3.4结构体、共用体和枚举/71
3.4.1结构体/71
3.4.2位域/72
3.4.3共用体/73
3.4.4枚举/74
3.5零长数组、变长数组和动态数组/75
3.6编码风格与缩进工具indent/77
3.7习题/79
第4章编译与调试/82
4.1gcc、make、Makefile、cmake和CMakeLists.txt/82
4.1.1gcc/82
4.1.2make和Makefile/84
4.1.3cmake和CMakeLists.txt/90
4.2完整的编译过程/90
4.3调试程序/92
4.3.1调试(Debug)和GDB/92
4.3.2测试用例/93
4.3.3GDB启动程序/93
4.3.4断点/94
4.3.5观察点/95
4.3.6捕捉点/96
4.3.7信号/96
4.3.8单步调试/97
4.3.9打印输出/97
4.3.10函数栈帧/99
4.3.11TUI窗口/100
4.3.12函数跳转/101
4.3.13段错误/101
4.3.14coredump/101
4.3.15调试正在运行的程序/102
4.3.16调试多进程和多线程/103
4.3.17gdb使用示例/105
4.4习题/105
第5章链表/107
5.1单向链表/107
5.1.1单链表结构与链表结点类型/107
5.1.2创建单链表/108
5.1.3插入结点/109
5.1.4删除结点/109
5.1.5读取结点/110
5.1.6查找结点/110
5.1.7打印单链表/110
5.1.8逆转单链表/111
5.1.9构建单向循环链表/111
5.1.10销毁单链表/112
5.1.11主函数及测试结果/112
5.2双向链表/113
5.2.1双链表结构与链表结点类型/113
5.2.2创建双链表/113
5.2.3插入结点/115
5.2.4删除结点/115
5.2.5读取结点/116
5.2.6查找结点/116
5.2.7打印双链表/116
5.2.8逆转双链表/117
5.2.9构建双向循环链表/117
5.2.10销毁双向循环链表/118
5.2.11主函数及测试结果/118
5.3内核链表/119
5.3.1list_head/119
5.3.2offsetof、container_of和list_entry/120
5.3.3链表初始化/120
5.3.4插入结点/121
5.3.5删除结点/121
5.3.6替换结点/122
5.3.7移动结点/122
5.3.8判断函数/123
5.3.9合并结点/123
5.3.10遍历链表/124
5.3.11用户空间使用内核链表/124
5.4习题/125
第6章C标准库/127
6.1C语言标准和glibc/127
6.2标准输入/输出函数库/129
6.2.1fopen/fclose/130
6.2.2stdin/stdout/stderr/132
6.2.3errno与perror函数/132
6.2.4以字节为单位的I/O函数/133
6.2.5以字符串为单位的I/O函数/135
6.2.6以记录为单位的I/O函数/136
6.2.7格式化读写文件/137
6.2.8操作读写位置的函数/138
6.2.9FILE结构体及I/O缓冲区/140
6.3标准工具函数库/143
6.3.1动态内存分配与释放/144
6.3.2整数算术/145
6.3.3随机数/146
6.3.4数值字符串转换/147
6.3.5宽字符和多字节字符转换/148
6.4字符串处理函数库/152
6.4.1内存赋值/152
6.4.2取字符串的长度/153
6.4.3复制字符串/153
6.4.4比较字符串/154
6.4.5搜索字符串/155
6.4.6连接字符串/156
6.4.7分割字符串/157
6.4.8本地函数/158
6.5字符处理函数库/160
6.6数学函数库/161
6.7学生信息管理系统的设计与实现/163
6.7.1系统设计要求/163
6.7.2系统设计/163
6.7.3函数设计/164
6.7.4参考程序/165
6.7.5运行结果/168
6.8习题/168
第7章Linux系统调用/171
7.1C库函数和Linux系统调用/171
7.2Linux中使用系统调用的三种方法/173
7.2.1通过glibc封装的库函数/173
7.2.2使用syscall直接调用/173
7.2.3通过CPU指令调用/173
7.3Linux系统调用编程: 进程管理/174
7.4Linux系统调用编程: 进程间通信/177
7.5Linux系统调用编程: exec函数族/179
7.6Linux系统调用编程: 文件管理/181
7.7习题/188
第8章Socket编程/190
8.1Socket基本概念/190
8.1.1Socket是什么/190
8.1.2主机字节序与网络字节序/191
8.1.3Socket地址结构/192
8.1.4地址转换函数/194
8.1.5C/S架构/195
8.2Socket相关函数/196
8.2.1socket函数/196
8.2.2bind函数/196
8.2.3listen/connect函数/196
8.2.4accept函数/197
8.2.5网络I/O函数/198
8.2.6close函数/200
8.2.7getsockopt和setsockopt函数/200
8.2.8select函数/203
8.2.9poll函数/203
8.2.10epoll函数/204
8.3基于TCP的网络程序/205
8.3.1简单C/S应用程序的设计/206
8.3.2交互式C/S应用程序的设计/208
8.3.3简单聊天室应用程序的设计(select)/210
8.3.4聊天室应用程序的设计(select)/214
8.3.5简单C/S应用程序的设计(epoll)/219
8.4基于UDP的网络程序/221
8.4.1简单C/S应用程序的设计/221
8.4.2简单聊天室应用程序的设计/223
8.5原始套接字编程/225
8.6UNIX Domain Socket/227
8.7习题/230
第9章Linux函数库和进程地址空间/232
9.1静态库和共享库/232
9.2函数库的制作和使用/233
9.2.1静态库的制作和使用/234
9.2.2共享库的制作和使用/236
9.3显式链接共享库/239
9.4进程地址空间/241
9.4.132位系统的进程地址空间/241
9.4.264位系统的进程地址空间/244
9.4.3查看进程地址空间/245
9.4.4编程验证进程地址空间布局/249
9.5动态链接过程/250
9.5.1ELF文件格式/251
9.5.2加载解释器/252
9.5.3运行解释器/253
9.6习题/260
第10章Pthreads编程/261
10.1Pthreads概述/261
10.1.1Linux进程和线程/261
10.1.2Linux线程模型/262
10.1.3Pthreads简介/263
10.2Pthreads函数/263
10.2.1创建线程/263
10.2.2终止线程/264
10.2.3线程的结合和分离/265
10.2.4线程属性/268
10.2.5自动清理线程资源/273
10.2.6线程同步与互斥/274
10.3Pthreads编程示例/281
10.3.1读者写者/281
10.3.2生产者消费者/282
10.3.3哲学家就餐/283
10.4习题/285
第11章GTK图形界面编程/287
11.1GTK概述/287
11.2GLib概述/288
11.3信号和回调函数/295
11.4GTK控件/297
11.4.1非容器控件/297
11.4.2容器控件/297
11.5GTK图形界面编程/298
11.5.1Hello World/298
11.5.2GtkGrid/299
11.5.3Custom Drawing/301
11.5.4GtkBuilder创建界面/304
11.5.5Cambalache/306
11.6GTK图形界面聊天室/308
11.6.1聊天室服务器端/308
11.6.2聊天室客户端/311
11.6.3测试/316
11.7习题/317
第12章Linux内核编程/319
12.1Linux内核编程概念/319
12.2LKM编程: Hello World/320
12.2.1LKM签名验证/320
12.2.2Hello World模块的编写和运行/322
12.2.3模块参数和模块导出符号/324
12.3Linux驱动程序设计/327
12.3.1Linux驱动程序简介/327
12.3.2字符设备驱动程序/328
12.3.3虚拟网卡驱动程序/332
12.4习题/335
附录AASCII码表/337
附录B资源及学习网站/338
参考文献/339
本书以“学完C语言之后知道能做什么”为编写目标,共12章: Linux C语言程序设计、C语言基础Ⅰ、C语言基础Ⅱ、编译与调试、链表、C标准库、Linux系统调用、Socket编程、Linux函数库和进程地址空间、Pthreads编程、GTK图形界面编程、Linux内核编程。其中,C语言基础Ⅰ、C语言基础Ⅱ、C标准库与Linux系统调用为本书最基础、最重要的4章,全面介绍了标准C的基本语法和Linux系统调用编程。其他章节告诉读者C语言具体能做什么。本书坚守“Talk is cheap, show me the code”信条,通过正确无误的示例代码向读者展示C语言的具体用法。本书内容注重实用,结构清晰,图文并茂,力求做到使读者感兴趣地学习Linux C语言编程。 本书可作为高等学校各专业的“C语言程序设计”课程教材,也可作为从事计算机相关工作的科技人员、计算机爱好者及各类自学人员的参考书。
本书作者多年来一直从事Linux教学和科研工作,使用C语言开发了多个Linux相关的横向纵向项目。本书全面介绍了Linux C语言程序设计的多个方面,包括C语言程序设计的基础知识,以及C标准库、Linux系统调用、socket、pthread、GTK、静态库和共享库的使用和编写,另外,还介绍了Linux内核编程。通过本书的学习,读者将成为一名全栈式Linux C语言开发人员。
Linux C语言程序设计
九五品北京
¥ 51.78
嵌入式Linux C语言程序设计
九五品深圳
¥ 15.00
嵌入式Linux C语言程序设计
八五品深圳
¥ 10.00
LINUX系统环境下C语言程序设计
全新广州
¥ 23.88
LINUX系统环境下C语言程序设计
全新广州
¥ 25.88
LINUX系统环境下C语言程序设计
全新广州
¥ 23.88
基于Linux的高级程序设计 C语言
全新无锡
¥ 56.40
基于Linux的高级程序设计 C语言
全新天津
¥ 58.00
LINUX系统环境下C语言程序设计
全新东莞
¥ 27.53
LINUX系统环境下C语言程序设计
全新南京
¥ 32.64
— 没有更多了 —
以下为对购买帮助不大的评价