深度剖析C语言知识体系,原理+实践,一课带你吃透C语言,如果通向大牛的道路有捷径,那就是先学好C语言,每个优秀开发者都应该精通C语言,这门课程专为所有没学过、没学好C语言的同学打造,精通多种语言的,带你系统、高效、啃透C语言这个硬骨头!
第1章 课程导学 2 节 | 7分钟
第2章 C语言必备基础 6 节 | 43分钟
图文:2-5 【加餐】背景知识
第3章 C语言快速入门10 节 | 132分钟
本章核心是对C语言的基本数据类型、变量常量、运算符、分支和循环语句等必备知识进行讲解,适合零基础的同学快速上手,也适合C语言基础薄弱的同学查缺补漏。
第4章 函数与程序结构6 节 | 55分钟
本章讲解C语言中函数的声明、实现以及使用方法,变量的类型和作用域。本章最后还会为你定制一个经典的汉诺塔的问题来实践函数的递归。相信通过本章的学习,你就可以独立完成一些基本功能的程序开发了。
第5章 预处理和宏5 节 | 53分钟
本章讲解C语言的预处理和宏的使用方法,包括文件包含、条件编译、宏函数等特性的理解和应用。本章最后会带你深度对比宏和函数实现一个方便打印输出的PrINTLNF 宏。
视频:5-3 宏函数 (10:46)
第6章 玩转数组7 节 | 62分钟
本章将带你吃透C语言中的数组,包括数组在内存当中的存储形式,字符串的基本概念,数组作为函数参数传递等内容。本章最后也会带你就数组元素的排序这一经典问题进行实践,加深对数组本身的理解。
视频:6-2 数组的边界 (09:50)
视频:6-3 字符串 (08:35)
视频:6-7 案例:数组元素的排序【Lomuto分割法】 (11:04)
第7章 吃透指针 11 节 | 106分钟
本章将带你吃透C语言的指针,包括指针的运算、函数参数传递以及返回值的内存复制过程、动态内存分配、函数指针等特性的分析及应用。本章最后还会结合宏和指针深度剖析一个简单的交换变量值的多种实现方法以及指针版本的快速排序算法的实现。…
视频:7-2 只读指针变量与只读变量指针 (04:43)
视频:7-5 左值和右值【只需记住这两点】 (06:54)
视频:7-8 函数指针与typedef (14:09)
视频:7-9 案例:交换两个变量的值 (14:49)
作业:7-11 为什么指针的值(内存的地址)也是整数?为什么还有 32 位和
第8章 聚合数据类型6 节 | 76分钟
本章将讲解C语言的聚合数据类型,包括结构体、联合体、枚举等特性及应用,也重点剖析结构体的内存对齐特性,本章最后会结合前面的知识给出字节序判断和单链表的基本实现的案例。
视频:8-4 枚举【多语言对比】 (12:25)
第9章 字符串的应用11 节 | 73分钟
本章将讲解标准库中对字符串提供的支持,包括窄字符与宽字符相关的字符类型判断,字符串比较、连接、复制,原始内存的清除、复制、移动等工具函数的应用,以及窄字符与宽字符的转换函数及编码设置的方法,最后会对C99新增的restrict、C11新增的安全版本函数做分析。…
视频:9-2 字符串与其他数值类型的转换 (14:21)
视频:9-3 字符串的长度与比较 (07:34)
视频:9-4 查找字符与子串 (06:00)
视频:9-5 字符串的拆分 (09:41)
视频:9-6 字符串的连接和复制 (03:14)
视频:9-8 C99的restrict (02:01)
视频:9-10 宽字符串与窄字符串的转换 (08:56)
作业:9-11 什么是字符集?什么是编码?为什么需要编码?
第10章 时间的应用6 节 | 49分钟
本章将讲解标准库中对时间提供的支持,包括计算机软件当中各类常见的时间概念,获取系统时间、日历时间的方法,时间的格式化和解析的方法等,由于各平台对时间的支持存在一定差异,我们使用条件编译实现一个跨平台的毫秒时间戳的获取函数,为你编写跨平台的代码提供思路。…
第11章 文件的输入输出14 节 | 125分钟
本章将讲解标准库中对文件输入输出的支持,包括文件流的概念,文件流按字符、按行、按字节读写函数的使用,并使用多个版本的文件复制的案例贯穿全章,在对比和迭代当中深刻理解不同的读写方式之间的差异,加深你对文件流缓冲等概念的理解。…
视频:11-1 输入输出流 (10:27)
视频:11-2 文件流的缓冲 (09:55)
视频:11-3 读写一个字符 (06:46)
视频:11-5 读写一行字符 (07:12)
视频:11-7 读写指定大小的字节 (09:45)
视频:11-11 案例:重定向标准输入输出流 (10:53)
视频:11-13 输入输出流的位置 (08:19)
第12章 线程与并发10 节 | 74分钟
本章将讲解C语言标准库从C11引入的线程以及并发相关知识。线程和并发是开发人员的必备基础,本章内容除了帮助你在实践当中更好地了解诸如pthreAD这样的线程库以外,对于其他现代语言的学习也是非常有益的。本章最后综合所学完成处理复杂的线程返回结果、并发任务执行与函数回调两个实践案例。…
视频:12-1 线程基础 (04:01)
视频:12-2 线程的基本用法 (10:57)
视频:12-4 volatile (03:51)
视频:12-5 原子类型 (09:38)
视频:12-6 锁 (05:42)
视频:12-7 ThreAD Local (08:26)
视频:12-8 副作用与纯函数 (03:05)
第13章 编译、链接和库8 节 | 59分钟
本章将基于gcc讲解C语言编译过程中的各个环节和细节,帮助你了解C语言是如何从源码一步一步编译成最后的可执行文件,也会讲解如何将自己的模块作为依赖导出,如何使用conan来管理第三方依赖,本章最后还会以C++和Java为例传授你如何使用其他语言来调用C语言库。…
第14章 GUI 编程实践10 节 | 132分钟
本章将讲解linux桌面GUI的主流开发技术GTK+,基于该框架了解如何使用C语言开发 GUI应用,掌握如何实现跨平台的GUI应用程序开发(支持Windows/macOS/linux),还将了解使用GTK+开发GUI程序的基本方法,包括如何创建Window,通过css来编辑控件样式,使用GlADe快速完成UI布局等。最后我们将仿照macOS的计算器实现一个功能相对…
第15章 综合案例:桌面跨平台高仿Mac版计算器8 节 | 86分钟
本章将综合前面所学,带大家从案例需求分析开始,到核心模块的接口设计,再到核心模块的业务逻辑及UI实现,手把手打造一款桌面跨平台高仿Mac版计算器。
第16章 综合案例:桌面跨平台的下载工具14 节 | 172分钟
本章作为课程最后的综合案例,将带你从零开始开发一个桌面跨平台的下载工具,包括使用Conan管理依赖,使用GTK+开发UI,使用curl访问网络,使用sqlite来存储任务,使用独立的线程来承载下载任务等等。本章综合性较强,我们力求尽可能多地覆盖课程当中所学的知识,帮助大家进一步加深对C语言的认识和理解,培养使用C语言构建…
视频:16-2 SQLite数据库引入及封装 (16:31)
第17章 课程总结2 节 | 7分钟
本章作为课程的最后一章,我们将带你整体梳理课程所学的内容,并提供一些后续的学习建议,在课程问答区老师等着与你进一步交流。