C语言系统化精讲 重塑编程思想 打造坚实的开发基础
如果通向大牛的道路有捷径,那就是先学好C语言
每个优秀开发者都应该精通C语言,这门课程专为所有没学过、没学好C语言的同学打造,精通多种语言的技术专家bennyhuo专属分享,带你系统、高效、啃透C语言这个硬骨头!
适合人群
希望获得更深层次进阶语言的开发者
希望夯实语言基础的开发者
希望精雕细琢掌握多门语言的开发者
有面试/跳槽/晋升需求的开发者和在校生
技术储备要求
零门槛,有计算机基础、操作系统、编程基础和经验更佳
课程目录
第1章 课程导学2 节7分钟
本章作为课程内容引入,主要介绍课程结构,课程的学习方法等。希望你能通过这门课程彻底掌握程序语言的“道”和“术”。
视频:1-2 课程介绍与学习指南
第2章 C语言必备基础9 节61分钟
本章主要讲解演示编译环境搭建,IDE配置,调试方法,代码规范风格等内容,为课程后续内容做足准备工作。
视频:2-1 Windows 环境配置
视频:2-2 macOS 环境配置
视频:2-3 程序调试方法
视频:2-4 C语言的代码风格【Google C CodeStyle/CLion配置代码风格】
视频:2-5 常见问题:老师是如何答疑的?
视频:2-6 常见问题:main 函数重复定义的问题如何解决?
视频:2-7 常见问题:为什么路径中不能含有中文字符?
第3章 C语言快速入门13 节142分钟
本章核心是对C语言的基本数据类型、变量常量、运算符、分支和循环语句等必备知识进行讲解,适合零基础的同学快速上手,也适合C语言基础薄弱的同学查缺补漏。
视频:3-1 数据类型之int类型【不同系统版本差异】
视频:3-2 数据类型之char类型【常见问题解决】
视频:3-3 数据类型之浮点类型【实际应用技巧】
视频:3-4 变量【内存地址分析】
视频:3-5 常量【常量修改秘笈】
视频:3-6 运算符-1【易踩坑点】
视频:3-7 运算符-2【难点突破】
视频:3-8 条件分支语句
视频:3-9 循环语句
视频:3-10 案例:猜数字的游戏
视频:3-11 常见问题:如何修改源文件的编码?
视频:3-12 常见问题:如何打印宽字符?
视频:3-13 常见问题:修改 const 变量为什么不生效?
第4章 函数与程序结构6 节56分钟
本章讲解C语言中函数的声明、实现以及使用方法,变量的类型和作用域。本章最后还会为你定制一个经典的汉诺塔的问题来实践函数的递归。相信通过本章的学习,你就可以独立完成一些基本功能的程序开发了。
视频:4-1 函数基础【tips:Google命名规范】
视频:4-2 函数的原型【空参数列表与 C++的区别】
视频:4-3 变量的类型和作用域【Compiler Explorer查看汇编指令】
视频:4-4 函数的变长参数【对比Java的变长参数】
视频:4-5 函数的递归【C语言实现斐波那契数列】
视频:4-6 案例:汉诺塔
第5章 预处理和宏6 节59分钟
本章讲解C语言的预处理和宏的使用方法,包括文件包含、条件编译、宏函数等特性的理解和应用。本章最后会带你深度对比宏和函数实现一个方便打印输出的PRINTLNF 宏。
视频:5-1 文件包含【领略编译器宏之以小搏大】
视频:5-2 案例:自定义头文件
视频:5-3 宏函数
视频:5-4 条件编译【掌握实际应用场景】
视频:5-5 案例:实现 PRINTLNF
视频:5-6 . 常见问题:遇到问题该怎么办?干这行真的需要天赋吗?
第6章 玩转数组10 节87分钟
本章将带你吃透C语言中的数组,包括数组在内存当中的存储形式,字符串的基本概念,数组作为函数参数传递等内容。本章最后也会带你就数组元素的排序这一经典问题进行实践,加深对数组本身的理解。
视频:6-1 数组基础【C语言设计哲学】
视频:6-2 数组的边界
视频:6-3 字符串
视频:6-4 函数的数组类型参数【C语言极致效率之源】
视频:6-5 二维数组【数组参数的正确使用姿势】
视频:6-6 案例:打乱数组的顺序【各种场景应用】
视频:6-7 案例:数组元素的排序【Lomuto分割法】
视频:6-8 常见问题:数据名与指针有什么区别?
视频:6-9 常见问题:一维数组与二维数组有什么区别?
视频:6-10 常见问题:io_utils 定义在哪里?
第7章 吃透指针11 节106分钟
本章将带你吃透C语言的指针,包括指针的运算、函数参数传递以及返回值的内存复制过程、动态内存分配、函数指针等特性的分析及应用。本章最后还会结合宏和指针深度剖析一个简单的交换变量值的多种实现方法以及指针版本的快速排序算法的实现。...
视频:7-1 指针基础【摸清本质带你爱上指针】
视频:7-2 只读指针变量与只读变量指针
视频:7-3 特殊的指针【使用禁忌】
视频:7-4 指针的运算【各式魔法操作】
视频:7-5 左值和右值【只需记住这两点】
视频:7-6 指针参数作为返回值【通过汇编了解函数返回值机制】
视频:7-7 动态内存分配【突破面试高频考点】
视频:7-8 函数指针与typedef
视频:7-9 案例:交换两个变量的值
视频:7-10 案例:指针版本的快速排序【Hoare分割法】
第8章 聚合数据类型6 节76分钟
本章将讲解C语言的聚合数据类型,包括结构体、联合体、枚举等特性及应用,也重点剖析结构体的内存对齐特性,本章最后会结合前面的知识给出字节序判断和单链表的基本实现的案例。
视频:8-1 结构体【内存占用分析】
视频:8-2 结构体的内存对齐【内存占用优化】
视频:8-3 联合体【使用场景分析】
视频:8-4 枚举【多语言对比】
视频:8-5 案例:判断字节序
视频:8-6 案例:单链表的基本实现
第9章 字符串的应用11 节73分钟
本章将讲解标准库中对字符串提供的支持,包括窄字符与宽字符相关的字符类型判断,字符串比较、连接、复制,原始内存的清除、复制、移动等工具函数的应用,以及窄字符与宽字符的转换函数及编码设置的方法,最后会对C99新增的restrict、C11新增的安全版本函数做分析。...
视频:9-1 判断字符的类型及原理的剖析
视频:9-2 字符串与其他数值类型的转换
视频:9-3 字符串的长度与比较
视频:9-4 查找字符与子串
视频:9-5 字符串的拆分
视频:9-6 字符串的连接和复制
视频:9-7 几个常见的内存操作函数
视频:9-8 C99的restrict
视频:9-9 C11的安全版本的函数
视频:9-10 宽字符串与窄字符串的转换
第10章 时间的应用6 节49分钟
本章将讲解标准库中对时间提供的支持,包括计算机软件当中各类常见的时间概念,获取系统时间、日历时间的方法,时间的格式化和解析的方法等,由于各平台对时间的支持存在一定差异,我们使用条件编译实现一个跨平台的毫秒时间戳的获取函数,为你编写跨平台的代码提供思路。...
视频:10-1 时间的基本概念
视频:10-2 获取系统时间
视频:10-3 获取日历时间
视频:10-4 格式化时间
视频:10-5 解析时间
视频:10-6 计算时间差
第11章 文件的输入输出14 节125分钟
本章将讲解标准库中对文件输入输出的支持,包括文件流的概念,文件流按字符、按行、按字节读写函数的使用,并使用多个版本的文件复制的案例贯穿全章,在对比和迭代当中深刻理解不同的读写方式之间的差异,加深你对文件流缓冲等概念的理解。...
视频:11-1 输入输出流
视频:11-2 文件流的缓冲
视频:11-3 读写一个字符
视频:11-4 案例:复制文件-1
视频:11-5 读写一行字符
视频:11-6 案例:复制文件-2
视频:11-7 读写指定大小的字节
视频:11-8 案例:序列化和反序列化的基本实现
视频:11-9 案例:复制文件-3
视频:11-10 格式化文本的输入输出
视频:11-11 案例:重定向标准输入输出流
视频:11-12 案例:统计文件字符个数
视频:11-13 输入输出流的位置
视频:11-14 其他常见的文件操作
第12章 线程与并发10 节74分钟
本章将讲解C语言标准库从C11引入的线程以及并发相关知识。线程和并发是开发人员的必备基础,本章内容除了帮助你在实践当中更好地了解诸如pthread这样的线程库以外,对于其他现代语言的学习也是非常有益的。本章最后综合所学完成处理复杂的线程返回结果、并发任务执行与函数回调两个实践案例。...
视频:12-1 线程的基本概念
视频:12-2 线程的基本用法
视频:12-3 资源的线程安全问题
视频:12-4 volatile
视频:12-5 原子类型
视频:12-6 锁
视频:12-7 Thread Local
视频:12-8 副作用与纯函数
视频:12-9 案例:处理复杂的线程返回结果
视频:12-10 案例:并发任务执行与函数回调
第13章 编译、链接和库8 节62分钟
本章将基于gcc讲解C语言编译过程中的各个环节和细节,帮助你了解C语言是如何从源码一步一步编译成最后的可执行文件,也会讲解如何将自己的模块作为依赖导出,如何使用conan来管理第三方依赖,本章最后还会以C++和Java为例传授你如何使用其他语言来调用C语言库。...
视频:13-1 可执行程序的编译过程
视频:13-2 静态链接库的构建和使用
视频:13-3 动态链接库的编译和使用
视频:13-4 使用CMake完成库的编译和链接
视频:13-5 使用 Conan 管理依赖
视频:13-6 使用 C++ 调用 C 程序
视频:13-7 使用Java调用C
第14章 GUI编程实践10 节132分钟
本章将讲解Linux桌面GUI的主流开发技术GTK+,基于该框架了解如何使用C语言开发 GUI应用,掌握如何实现跨平台的GUI应用程序开发(支持Windows/macOS/Linux),还将了解使用GTK+开发GUI程序的基本方法,包括如何创建Window,通过css来编辑控件样式,使用Glade快速完成UI布局等。最后我们将仿照macOS的计算器实现一个功能相对...
视频:14-1 GUI开发概述【各平台GUI方案】
视频:14-2 安装 GTK【安装GTK的各种问题解决】
视频:14-3 编写第一个GTK程序
视频:14-4 为GTK应用配置主题
视频:14-5 使用 Xml 完成布局
视频:14-6 使用 Glade 完成布局【提高布局开发效率的大招】
视频:14-7 扩展:使用CSS调整控件样式
视频:14-8 打包发布GTK程序
视频:14-9 GTK的面向对象设计理念
视频:14-10 GTK的内存管理
第15章 综合案例:桌面跨平台高仿Mac版计算器8 节86分钟
本章将综合前面所学,带大家从案例需求分析开始,到核心模块的接口设计,再到核心模块的业务逻辑及UI实现,手把手打造一款桌面跨平台高仿Mac版计算器。
视频:15-1 案例效果展示
视频:15-2 计算器核心模块接口设计
视频:15-3 使用控制台调试计算器的输入输出
视频:15-4 测试用例编写与单元测试
视频:15-5 计算器核心逻辑实现-1
视频:15-6 计算器核心逻辑实现-2
视频:15-7 计算器UI布局开发
视频:15-8 计算器UI逻辑接入及案例最终完整实现
第16章 综合案例:桌面跨平台的下载工具14 节174分钟
本章作为课程最后的综合案例,将带你从零开始开发一个桌面跨平台的下载工具,包括使用Conan管理依赖,使用GTK+开发UI,使用curl访问网络,使用sqlite来存储任务,使用独立的线程来承载下载任务等等。本章综合性较强,我们力求尽可能多地覆盖课程当中所学的知识,帮助大家进一步加深对C语言的认识和理解,培养使用C语言构建...
视频:16-1 案例基本功能及环境配置介绍
视频:16-2 SQLite数据库引入及封装
视频:16-3 实现对任务数据结构的增删改查
视频:16-4 CURL的引入及下载逻辑的封装
视频:16-5 文件名的解析及下载逻辑的验证
视频:16-6 线程池的引入以及下载相关接口的封装
视频:16-7 下载软件UI布局的介绍
视频:16-8 实现下载任务的添加-1
视频:16-9 实现下载任务的添加-2
视频:16-10 窗口内存泄漏的分析与解决
视频:16-11 实现下载任务列表-1
视频:16-12 实现下载任务列表-2
视频:16-13 实现下载任务列表-3
视频:16-14 下载软件的功能演示
第17章 课程总结2 节7分钟
本章作为课程的最后一章,我们将带你整体梳理课程所学的内容,并提供一些后续的学习建议,在课程问答区老师等着与你进一步交流。
视频:17-1 课程总结
资料.zip
下载链接见右侧按钮
声明:1、学神资源吧资源均通过互联网公开合法渠道获取,资源价格仅代表资源收集整理的费用,绝不代表原作品本身的价值。资源仅供阅读测试,请在下载后24小时内删除,谢谢合作!2、由于部分资源中不可避免的存在一些敏感关键词,如果购买后提示网盘资源链接失效,或者提示此类资源无法分享的情况,您无需担心,只需要联客服联系为您补发资源即可。
3、版权归原作者或出版方所有,本站不对涉及的版权问题负法律责任。若版权方认为学神资源吧侵权,请联系客服或发送邮件处理。。。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理,微信: xueshen2025。