首页 > 系统相关 >Linux C语言程序设计(微课视频版)

Linux C语言程序设计(微课视频版)

时间:2022-12-19 16:46:52浏览次数:50  
标签:10 函数 编程 C语言 3.3 微课 Linux

 

Linux C语言程序设计(微课视频版)
主 编:张同光
出版单位:清华大学出版社
ISBN:
ISBN:
出版时间:2023.6
CIP:

 

 

内 容 简 介

本书以“学完C语言之后知道能做什么”为编写目标,共包括10章:Linux C语言程序设计简介、C语言基础、编译与调试、链表、C标准库与Linux系统调用、Socket编程、Linux函数库和进程地址空间、Pthreads编程、GTK图形界面编程、Linux内核编程。其中,C语言基础、C标准库与Linux系统调用为本书最基础最重要的两章,全面介绍了标准C的基本语法和Linux系统调用编程。其他章节告诉读者C语言具体能做什么。本书坚守“Talk is cheap, show me the code.”信条,通过正确无误的示例代码向读者展示C语言的具体用法。本书内容注重实用、结构清晰、图文并茂,力求做到使读者在兴趣中学习Linux C语言编程。
本书适合作为高等学校各专业的C语言程序设计课程教材,也可作为从事计算机相关工作的科技人员、计算机爱好者及各类自学人员的参考书。

 

《Linux C语言程序设计(微课视频版)》三级目录


第1章  Linux C语言程序设计简介        1
        1.1  C语言        1
                1.1.1  C语言简介        1
                1.1.2  C语言发展历史        1
                1.1.3  C语言特点        2
        1.2  Linux简介        3
        1.3  Linux C语言程序设计        4
                1.3.1  Linux应用编程、系统编程和内核编程        4
                1.3.2  Linux图形界面编程        4
        1.4  Linux C语言编程环境        4
                1.4.1  Ubuntu Linux虚拟机        4
                1.4.2  gedit、vim和nano        5
                1.4.3  C语言编译器及集成开发环境        6
                1.4.4  Hello World程序        6
        1.5  习题        7


第2章  C语言基础        1
        2.1  数据        1
                2.1.1  数据类型        1
                2.1.2  常量        3
                2.1.3  变量和标识符        4
                2.1.4  数据类型转换        5
                2.1.5  转义字符(转义序列)        7
        2.2  运算符        8
                2.2.1  运算符和表达式        8
                2.2.2  算术运算        9
                2.2.3  赋值运算        10
                2.2.4  关系运算        10
                2.2.5  逻辑运算符        11
                2.2.6  条件运算符        11
                2.2.7  逗号运算符        11
                2.2.8  sizeof运算符与typedef类型声明        12
                2.2.9  位运算        12
                2.2.10  复合赋值运算符        13
        2.3  结构化程序设计        14
                2.3.1  顺序结构        14
                2.3.2  分支结构        15
                2.3.3  循环结构        16
        2.4  输入输出        20
                2.4.1  标准输出函数printf        20
                2.4.2  标准输入函数scanf        22
        2.5  数组        24
                2.5.1  一维数组        24
                2.5.2  二维数组        26
                2.5.3  一维字符数组        26
                2.5.4  一维字符数组的输入输出        27
                2.5.5  字符串处理函数        27
                2.5.6  二维字符数组        29
        2.6  函数        29
                2.6.1  C语言库函数        30
                2.6.2  函数定义和声明        31
                2.6.3  函数调用及参数传递        31
                2.6.4  函数的嵌套与递归        35
                2.6.5  回调函数        35
                2.6.6  return语句        36
                2.6.7  全局变量、局部变量和作用域        36
                2.6.8  变量的存储类别及生存期        37
                2.6.9  内部函数和外部函数        39
        2.7  预处理        40
                2.7.1  预处理的步骤        40
                2.7.2  宏定义和内联函数        41
                2.7.3  条件编译        42
                2.7.4  文件包含        43
        2.8  指针        44
                2.8.1  指针的基本运算        44
                2.8.2  指针与数组        47
                2.8.3  指针与const限定符        49
                2.8.4  指针与字符串        50
                2.8.5  指针函数与函数指针        50
                2.8.6  再讲回调函数        51
                2.8.7  可变参数        52
                2.8.8  二级指针与多级指针        54
                2.8.9  指针数组和数组指针        54
                2.8.10  动态内存管理        55
        2.9  结构体、共用体和枚举        56
                2.9.1  结构体        56
                2.9.2  位域        58
                2.9.3  共用体        58
                2.9.4  枚举        59
        2.10  零长数组、变长数组和动态数组        60
        2.11  编码风格与缩进工具indent        62
        2.12  习题        63


第3章  编译与调试        1
        3.1  gcc、make、Makefile、cmake和CMakeLists.txt        1
                3.1.1  gcc        1
                3.1.2  make和Makefile        2
                3.1.3  cmake和CMakeLists.txt        8
        3.2  完整的编译过程        9
        3.3  调试程序        10
                3.3.1  调试(Debug)和GDB        10
                3.3.2  测试用例        11
                3.3.3  GDB启动程序        12
                3.3.4  断点        13
                3.3.5  观察点        14
                3.3.6  捕捉点        15
                3.3.7  信号        15
                3.3.8  单步调试        15
                3.3.9  打印输出        16
                3.3.10  函数栈帧        18
                3.3.11  TUI窗口        19
                3.3.12  函数跳转        20
                3.3.13  段错误        20
                3.3.14  coredump        20
                3.3.15  调试正在运行的程序        21
                3.3.16  调试多进程和多线程        22
                3.3.17  gdb使用示例        24
        3.4  习题        24


第4章  链表        1
        4.1  单向链表        1
                4.1.1  单链表结构与链表结点类型        1
                4.1.2  创建单链表        2
                4.1.3  插入结点        3
                4.1.4  删除结点        3
                4.1.5  读取结点        4
                4.1.6  查找结点        4
                4.1.7  打印单链表        4
                4.1.8  逆转单链表        5
                4.1.9  构建单向循环链表        5
                4.1.10  销毁单链表        6
                4.1.11  主函数及测试结果        6
        4.2  双向链表        7
                4.2.1  双链表结构与链表结点类型        7
                4.2.2  创建双链表        8
                4.2.3  插入结点        9
                4.2.4  删除结点        9
                4.2.5  读取结点        10
                4.2.6  查找结点        10
                4.2.7  打印双链表        11
                4.2.8  逆转双链表        11
                4.2.9  构建双向循环链表        12
                4.2.10  销毁双向循环链表        12
                4.2.11  主函数及测试结果        13
        4.3  内核链表        14
                4.3.1  list_head        14
                4.3.2  offsetof、container_of和list_entry        14
                4.3.3  链表初始化        15
                4.3.4  插入结点        16
                4.3.5  删除结点        16
                4.3.6  替换结点        17
                4.3.7  移动结点        17
                4.3.8  判断函数        17
                4.3.9  合并结点        18
                4.3.10  遍历链表        19
                4.3.11  用户空间使用内核链表        19
        4.4  习题        20


第5章  C标准库与Linux系统调用        1
        5.1  C语言标准和glibc        1
        5.2  标准输入输出函数库(stdio.h)        3
                5.2.1  fopen/fclose        3
                5.2.2  stdin/stdout/stderr        5
                5.2.3  errno与perror函数        6
                5.2.4  以字节为单位的I/O函数        7
                5.2.5  以字符串为单位的I/O函数        9
                5.2.6  以记录为单位的I/O函数        10
                5.2.7  格式化读写文件        11
                5.2.8  操作读写位置的函数        12
                5.2.9  FILE结构体及I/O缓冲区        14
        5.3  标准工具函数库(stdlib.h)        18
                5.3.1  动态内存分配与释放        18
                5.3.2  整数算术        20
                5.3.3  随机数        20
                5.3.4  数值字符串转换        21
                5.3.5  宽字符和多字节字符转换        23
        5.4  字符串处理函数库(string.h)        26
                5.4.1  初始化字符串        26
                5.4.2  取字符串的长度        27
                5.4.3  复制字符串        27
                5.4.4  比较字符串        28
                5.4.5  搜索字符串        29
                5.4.6  连接字符串        30
                5.4.7  分割字符串        31
                5.4.8  本地函数        32
        5.5  字符处理函数库(ctype.h)        34
        5.6  数学函数库(math.h)        35
        5.7  学生信息管理系统的设计与实现        37
                5.7.1 系统设计要求        37
                5.7.2 系统设计        38
                5.7.3 函数设计        38
                5.7.4 参考程序        40
                5.7.5 运行结果        43
        5.8  C库函数和Linux系统调用        44
        5.9  Linux中使用系统调用的三种方法        45
                5.9.1  通过glibc封装的库函数        45
                5.9.2  使用syscall直接调用        45
                5.9.3  通过CPU指令调用        46
        5.10  Linux系统调用编程:进程管理        47
        5.11  Linux系统调用编程:进程间通信        49
        5.12  Linux系统调用编程:exec函数族        52
        5.13  Linux系统调用编程:文件管理        55
        5.14  习题        62


第6章  Socket编程        1
        6.1  Socket基本概念        1
                6.1.1  Socket是什么        1
                6.1.2  网络字节序与主机字节序        2
                6.1.3  Socket地址结构        3
                6.1.4  地址转换函数        5
                6.1.5  C/S架构        6
        6.2  Socket相关函数        7
                6.2.1  socket函数        7
                6.2.2  bind函数        7
                6.2.3  listen/connect函数        7
                6.2.4  accept函数        8
                6.2.5  网络I/O函数        9
                6.2.6  close函数        11
                6.2.7  getsockopt和setsockopt函数        11
                6.2.8  select函数        13
                6.2.9  poll函数        14
                6.2.10  epoll函数        14
        6.3  基于TCP协议的网络程序        16
                6.3.1  简单C/S应用程序的设计        16
                6.3.2  交互式C/S应用程序的设计        19
                6.3.3  简单聊天室应用程序的设计(select)        21
                6.3.4  聊天室应用程序的设计(select)        25
                6.3.5  简单C/S应用程序的设计(epoll)        31
        6.4  基于UDP协议的网络程序        33
                6.4.1  简单C/S应用程序的设计        33
                6.4.2  简单聊天室应用程序的设计        35
        6.5  原始套接字编程        38
        6.6  UNIX Domain Socket        41
        6.7  习题        43


第7章  Linux函数库和进程地址空间        1
        7.1  静态库和共享库        1
        7.2  函数库的制作和使用        2
                7.2.1  静态库的制作和使用        3
                7.2.2  共享库的制作和使用        4
        7.3  显式链接共享库        7
        7.4  进程地址空间        9
                7.4.1  32位系统的进程地址空间        10
                7.4.2  64位系统的进程地址空间        13
                7.4.3  查看进程地址空间        14
                7.4.4  编程验证进程地址空间布局        17
        7.5  动态链接过程        19
                7.5.1  ELF文件格式        20
                7.5.2  加载解释器        22
                7.5.3  运行解释器        23
        7.6  习题        29


第8章  Pthreads编程        1
        8.1  Pthreads概述        1
                8.1.1  Linux进程和线程        1
                8.1.2  Linux线程模型        2
                8.1.3  Pthreads概述        2
        8.2  Pthreads函数        3
                8.2.1  创建线程        3
                8.2.2  终止线程        3
                8.2.3  线程的结合和分离        4
                8.2.4  线程属性        7
                8.2.5  自动清理线程资源        13
                8.2.6  线程同步与互斥        14
        8.3  Pthreads编程示例        21
                8.3.1  读者写者        21
                8.3.2  生产者消费者        24
                8.3.3  哲学家就餐        25
        8.4  习题        27


第9章  GTK图形界面编程        1
        9.1  GTK简介        1
        9.2  GLib简介        2
        9.3  信号和回调函数        7
        9.4  GTK控件        9
                9.4.1  非容器控件        9
                9.4.2  容器控件        9
        9.5  GTK图形界面编程        10
                9.5.1  Hello World        10
                9.5.2  GtkGrid        11
                9.5.3  Custom Drawing        13
                9.5.4  GtkBuilder创建界面        16
                9.5.5  Cambalache        18
        9.6  GTK图形界面聊天室        21
                9.6.1  聊天室服务器端        21
                9.6.2  聊天室客户端        25
                9.6.3  测试        32
        9.7  习题        34


第10章  Linux内核编程        1
        10.1  Linux内核编程简介        1
                10.2  LKM编程:Hello World        1
                10.2.1  LKM签名验证        1
                10.2.2  Hello World模块的编写和运行        3
                10.2.3  模块参数和模块导出符号        6
        10.3  Linux驱动程序设计        9
                10.3.1  Linux驱动程序简介        9
                10.3.2  字符设备驱动程序        10
                10.3.3  虚拟网卡驱动程序        14
        10.4  习题        18

  

 

标签:10,函数,编程,C语言,3.3,微课,Linux
From: https://www.cnblogs.com/ztguang/p/16992514.html

相关文章

  • Linux 查看端口占用情况
    Linux查看端口占用情况可以使用lsof和netstat命令。lsoflsof(listopenfiles)是一个列出当前系统打开文件的工具。lsof查看端口占用语法格式:lsof-i:端口号......
  • linux 动态库加载优先级
    在Linux系统中,动态库的加载优先级可以由多个因素决定,包括:1、LD_LIBRARY_PATH环境变量:如果在环境变量LD_LIBRARY_PATH中指定了一个库文件的路径,那么在这个路径中找......
  • 第一章 C语言简述
    C语言发展简史基本概念程序用程序设计语言安排好的处理步骤称为程序。程序是操作指令的集合程序设计用程序设计语言编制程序的过程叫做程序设计语言的发展二进制语言电脑是......
  • 初识C语言
    C语言——>早期不成熟——>成熟——>流行国际标准ANSIC——C89/C90C99/C11并不流行--不少编译器不支持%d——打印整型%c——打印字符%f—打印浮点数字—打小数%p—以地址的......
  • 为什么服务器系统用Linux?Linux有哪些优势?
    服务器的操作系统可以实现对计算机的管理和控制,任何计算机的运行都离不开操作系统,服务器也一样。服务器操作系统主要分为四大流派:windowsServer、Netware、Unix、linu......
  • 【redis-01】linux与windows的远程互连
    写在开头博主在用linux远程连接windows上的redis时遇到了一些问题,网络上能搜索到的回答跟自己的情况不太相符,索性就总结一下相关问题写篇随笔分享给同路人,也方便以后自己......
  • linux多线程随机数,随机数SecureRandom在Linux下阻塞
    https://blog.csdn.net/weixin_35973521/article/details/116813890-Djava.security.egd=file:/dev/./urandomhttps://blog.csdn.net/weixin_32159771/article/details/1......
  • Linux搭建FTP服务器
    这里写自定义目录标题​​Linux搭建FTP服务器​​​​简述​​​​一.安装服务器​​​​1.1.安装vsftp​​​​1.2.配置文件路径​​​​二.配置vsftp​​​​2.1.配置......
  • Linux的一些指令
    ls查看当前目录tail-flog的位置查看日志(展示最后几行,即更新了会打印出来)具体可查看https://blog.csdn.net/weixin_42230607/article/details/116578465cat打开文......
  • 所有的坑都要一一蹚过(C语言)
    一昧追求速度的结果只能制造更多的BUG,更多的麻烦,从而变得比原来更慢,不如一开始就稳扎稳打C语言报错:error:expected‘:’,‘,’,‘;’,‘}’or‘attribute’......