vlambda博客
学习文章列表

手把手入门硬核c语言

哈喽 大家好 我叫人宅,很高兴和大家一起分享一下本套硬核系列课程 手把手入门硬核c语言。

我自己学习c已经有很多年了,但是我不敢说自己精通c语言,因为它太强大了,每次回顾都感觉是耳目一新。


可以这么说,了解c语言的冰山一角,足以帮助我们找到工作,拿到不错的薪资。

记得当时自己在学习c语言的时候,以现在来看,就只学习了些皮毛 冰山一角的冰山一角,后面很多技术和新的东西都是通过大量项目实战 阅读,总结的,这个过程持续了很多年~ 一直在想为什么不一开始就掌握这些呢,这样我是不是走的更远,拿的更多呢?

我花了不少时间去准备这套课程,并不是去讲解c语言的冰山一角,而是将它当作一个艺术作品来完成,如果只讲解冰山一角,对于入门的同学,就真的没有必要选择我们的这套课程。

既然是付费课程,当然要拿出真东西。


好,还是谈谈为什么要选择我们这套课程?

既然花时间准备出这套基础课程,那就要讲解最硬核,最精华,最实战最接地气的内容,要比市面上其他同种c语言还要深入,还要容易入门,使学员在了解c语言冰山一角的基础上了解c语言更加广阔的底层应用,并且理解它的相应算法。


那为什么要学习c语言,我想学习的是c++

c语言是windows底层语言,windows底层很多API和 逻辑框架,以及服务器都是c语言编写,学习c语言可以看懂很多底层设计思路,在程序行业,工作内容越底层薪资越高。

我们学习c语言最重要是为了学习c++因为这套教程是完全为UE4准备的底层技术讲解。如果只想单独学习c语言也可以选择这套教程,这套教程是独立的。

学习c++的难点不是c++本身 而是是c语言。很多人不是死在c++各种奇怪语法,而是卡在c语言各种语法,内存管理以及指针,从入门到放弃。


C语言的重要性

比如我们用UE4的蓝图开发游戏,这样需求下,需要的程序员的薪资不高,所处理的大多是简单逻辑业务,比蓝图高点的是UE4C++开发游戏,薪资明显高于UE4蓝图开发人员,比UE4C++再高点的是UE4C++开发工具类,编辑器类等等,比这个再高的是开发UE4引擎,或者是独立引擎等,再高的是各种图形渲染器和服务器等,在这个过程中你会接触到很多c语言库,还有c语言奇妙的语法,各种奇怪的宏,以及变态的指针语法,学习硬核c语言更容易看懂底层设计和架构,以及这些变态语法背后思路,不会为它那莫名其妙的语法所困惑,所以c语言非常重要,而市面上的c语言讲解,实在是太浅了,不足于让你看懂c语言 源码内的奇淫技巧。

不管你是美术还是策划还是其他行业,只要你想做UE4 TA或者是想转入UE4作程序员,图程,先从c语言入手。虽然我们讲解的是c语言基础,但是里面却讲解了很多软件底层的核心战术和技巧。


本套课程完全是零基础入门课程,将会给您带来非常多的硬核知识,让您学习完c基础的时候就领先于身边同样在大学里学习c的小伙伴。


这套课程里面有哪些核心内容呢?


位运算

位运算,我们会详细讲解位运算的各种案例和习题,算法,如何优化代码等,绝对要让学员理解底层技术的基础上理解如何在实际项目中产生作用。


宏的高级运用

我们会讲解宏的各种高级替换案例,详细分析如何编写,如何实战。


字符串操作

这是我们重点,因为我们不是简单的讲解字符串API怎么用,而是会讲解它是怎么写的,为什么这么写,以及底层设计的思路,算法等


文件类操作

这个是非常重要的,因为我们在日后的项目开发中大量使用到这类文件操作的开发,比如 如何递归文件夹内的所有文件,如何读取磁盘文件txt,fbx ,png,等等格式的数据,我们会通过底层技术讲解这些是怎么开发的,以后对于我们开发独立引擎将非常方便。


C容器

我们会教大家如何搭建一套c容器,如何进行内存管理,如何分配内存,如何释放内存,,如何泛化c容器等操作,这一章对我们理解c内存管理非常重要。


c 库封装(simple c)

我们会带着大家封装一套基于c语言的扩展库。只要购买本套教程,该库完全授权你在商业项目中使用。该库有些什么内容呢?

a.对路径的自由操作。
b.对内存自动扩展的容器
c.对字符串操作的新扩展
d.文件操作扩展
e.日志系统
f.guid操作
g.对WindowsAPI的扩展

客户端引擎 服务的引擎 网络协议实战知识

我们会通过案例 git 为大家展示短链接如何搭建,如何定义和理解协议号,如何实现客户端和服务端的通信,服务如何处理客户端请求,如何设计结构,如何使用windows多线程,如何使用我们封装的库来完成以上的操作。


大型案例git系统版本控制实战

这是一套综合我们所有c语言课程内容的一套实战案例,我们会教学员编写目前最主流分布式版本控制系统 git ,如何通过命令进行版本控制迭代更新等,其中包含服务器引擎架构,客户端引擎架构,底层网络协议通信知识,多线程使用,版本控制,版本迭代,版本冲突,查看其他用户上传的日志,查看其他用户提交状态,注册,上传数据,下载数据,vs内存问题,cmd字体着色,日志系统,自定义windows菜单按钮等,该案例的教学代码,客户端1596行,服务端1024行,库有1001行,我们在库的依赖上 只有windows原生库和c语言标准库 里面大量的底层算法,我们会手把手教大家去写, 后面会有该案例的演示。此案例一旦掌握,学员将具备独立编写程序能力,未来学习其他的c源码,即使该代码再华丽,再变态,基本上没有问题了,因为我们就是用这种变态的思路去写的,我们希望学员在起步的时候就领先科班学习c的小伙伴,在日后的工作中游刃有余。



好 现在,我们来介绍一下 ,本套课程会带来哪些令人期待的内容?

第一章 简单的程序

这一章会讲解什么是程序,如何通过批处理启动我们的独立程序。

第二章 变量类型

这节我们会讲解常见的变量类型 int float char 等

第三章 变量

这章我们开始讲解变量的原理,理解变量在内存的分布和左右值的概念

第四章 常量

这一章我们会讲解如何定义常量,以及宏替换的高级运用

第五章 其他常用关键字

这一章我们会讲解 c语言的其他常用关键字 比如auto static和register的使用方法和作用

第六章 运算符

这一章我们开始讲解c语言的运算符操作,其中会讲解到位运算,会有大量的练习,去理解位运算,比如位运算判断奇偶,位运算所有权掩码验证等

第七章 语句和函数

这一章我们开始讲解各种函数,比如内联递归,普通函数静态函数,并且讲解各种常见语句

第八章 指针

这一章是非常重要的一章节,也是c语言的难点,我们会详细讲解什么是指针,什么是函数指针,怎么理解指针和函数的关系,如何将指针运用到我们的项目中,如何裁剪数组等

第九章 字符串

这一章同样重要,我们会讲解, 字符串的处理,字符串转换问题与操作等。在我们以后学习程序的时候字符串是我们经常使用的工具,灵活的掌握字符串操作会对我们以后工作,事半功倍,

第十章 枚举

这一章我们开始讲解c风格的枚举。

第十一章 结构体

这一章我们开始讲解结构体,理解c风格的结构体各种操作,理解位域,理解如何使用共用体解决大端小端问题等

第十二章 文件读写

这一章同样重要,这一章我们会讲解如何将数据从本地磁盘读取到内存,并且对这些数据进行操作,然后保存到磁盘。我们的文件读取不仅是应用于text文件还会应用fbx等多个文件的读取

第十三章 预处理

这节我们会讲解预处理,预处理可以用帮我们轻松实现跨平台问题。

第十四章 内存管理

这一章同样重要,c语言比其他语言的强大之处就是可以对内存进行管理,这一章我们讲解如何分配我们的内存,如何拷贝,如何扩展内存等操作

第十五章 二进制码

这一章我们开始讲解什么是原码什么是反码什么是补码,如何理解char的取值是 -128,如何理解十进制下的二进制是如何进行计算的

第十六章 文件操作和磁盘信息

这一章我们会讲解如何对我们的文件进行操作,比如生成文件夹,删除文件夹,获取磁盘容量,剩余容量,理解驱动掩码等

第十七章 程序终止

这一章我们会讲解什么是断言,c语言的断言应该怎么使用,以及其他终止程序的方法和思路

第十八章 实战-c语言容器

这一章我们会讲解如何通过内存管理来制作c语言容器,字符串容器,如何泛化容器,这一章对我们理解c语言内存管理起到至关重要的重要。

第十九章 文件操作进阶

这一章我们会讲解文件操作的进阶内容,如何遍历我们的文件内的子项,如何递归寻找文件夹中的文件等详细操作

第二十章 实战-编写一个git版本控制系统

这一章我们讲解市面上目前最火的版本控制系统,git ,当然我们不是讲解如何使用git 而是讲解如何架构它,如何通过GM命令来对我们git系统进行版本下载, 版本冲突,版本合并,版本上传,查看日志,查看状态,注册等操作,其中会涉及到客户端和服务的知识,我们会讲解如何架构客户端引擎,目前市面上所有引擎都是按照这种方式构建的,还有我们的服务端引擎,其中会涉及到协议和协议号,这是我们理解网络通信的关键。这一章的掌握,将对初学者的程序内功有很大的提高。


目录


第一章 简单程序

1-1 如何安装vs2019和小番茄

1-2 编写第一个程序Hello C

1-3 什么是程序

1-4 批处理调用自己的独立程序


第二章 变量类型

2-1 c基本语法

2-2 整形类型

2-3 char整形类型

2-4 浮点类型


第三章 变量

3-1 全局变量

3-2 理解左值和右值

3-3 程序在内存的分布情况


第四章 常量

4-1 整形变量

4-2 浮点变量

4-3 字符和字符串变量

4-4 宏替换的高级运用

4-5 修饰常量

4-6 typedef定义变量


第五章 其他常用关键字

5-1 auto关键字

5-2 register关键字

5-3 static关键字


第六章 运算符

6-1 算术运算符

6-2 关系运算符

6-3 逻辑运算符

6-4 位运算与安保验证

6-5 位操作的详细讲解

6-6左移右移操作符原理

6-7 赋值运算符

6-8 符号的优先级问题

6-9 作业-位运算计算奇偶和2的整数次幂

6-10作业-flag所有权掩码验证

6-11作业-二进进制和十进制相互转换


第七章 语句和函数

7-1条件语句

7-2 循环

7-3普通函数和静态函数

7-4 内联函数

7-5 递归函数

7-6 函数占位符

7-7 作用域

7-8 课堂后作业


第八章 指针

8-1 数组基础

8-2 指针基础

8-3 函数指针

8-4 指针数组和数组指针

8-5 多维数组

8-6 指针的多级寻址

8-7 指针作为形参和返回值

8-8 数组作为形参和返回值

8-9 作业-访问一维数组和二维数组的纵横元素思路

8-11 作业-实现对数组的裁剪操作


第九章 字符串

9-1 字符串概念

9-2 strcpy

9-3 strcat

9-4 strlen

9-5 strcmp 与 ASCII表

9-6 strchr

9-7 atoi

9-8 itoa

9-9 strtok

9-10 strstr

9-11 移除字符串

9-12 strspn

9-13 字符替换

9-14 printf底层原理


第十章 枚举

10-1 枚举在程序中作用

10-2 枚举的定义

10-3 遍历枚举


第十一章 结构体

11-1 如何理解结构体

11-2 结构体定义和声明

11-3 结构体初始化

11-4 结构体作为函数参数

11-5 结构体作为指针

11-6 位域

11-7 结构体在内存中的分布问题

11-8 共用体

11-9 联合体和大小端实战


第十二章 文件读写

12-1 输入和输出

12-2 文件写入

12-3 文件读取

12-4 文件操作的模式

12-5 fseek

12-6 读写扩展

12-7 stderr错误处理

12-8 文件删除和文件拷贝


第十三章 预处理

13-1 预处理cpp

13-2 预定义宏

13-3 region


第十四章 内存管理

14-1 malloc和free

14-2 calloc

14-3 realloc

14-4 memset

14-5 memcpy


第十五章 二进制码操作

15-1 真数和二进制机器数

15-2 原码

15-3 反码

15-4 补码

15-5 取值-128 深入理解


第十六章 文件操作和磁盘信息

16-1 _mkdir 生成文件夹

16-2_rmdir 移除文件夹

16-3 _getcwd 获取工作路径

16-4 _chdir 替换工作目录

16-5 _getdiskfree 获取磁盘信息

16-6 _getdrive 获取工作磁盘

16-7 _getdrives理解驱动掩码

16-8 _chdrive 切换工作盘符

16-9 _access

16-10 rename


第十七章 程序终止

17-1 assert断言

17-2 abort

17-3 exit


第十八章 实战-C语言容器

18-1 c容器架构

18-2 如何对c容器的数据进行分配内存

18-3 如何对c容器进行元素添加

18-4 释放c容器的堆内存

18-5 对内存自动扩容操作

18-6 字符串容器思路

18-7 封装字符串容器为库

18-8 泛化c容器


第十九章 文件操作进阶

19-1文件递归查找框架搭建

19-2_finddata_t

19-3 文件属性

19-4 寻找指定路径下所有文件

19-5 递归子目录下的所有文件


第二十章 实战-编写一个简单的git版本控制系统

20-1部署开发环境库

20-2 引擎的基础架构

20-3 第一个命令git init

20-4 对窗口的字体进行着色

20-5 实现git remote add origin语句

20-6 git引擎初始化

20-7 git --global user用户注册

20-8 让日志系统支持任意参数打印

20-9 自定义windows鼠标右键添加按钮

20-10 卸载程序卸载注册表

20-11 程序安装与卸载功能封装与实现

20-12 git clone命令

20-13 编写path生成库

20-14 测试git clone 功能

20-15 git add上传到仓库

20-16 guid库编写

20-17 用cmd窗口打印动态百分比

20-18 git commit -m命令编写

20-19 git push -u origin master命令

20-20 版本列表

20-21 本地存储用户配置信息

20-22 定义项目路径和远端url

20-23 搭建服务端引擎

20-24 定义服务端底层通信协议框架

20-25定义客户端底层协议框架

20-26windows多线程

20-27客户端和服务端底层握手

20-28客户端和服务端的一次短链接

20-29定义服务器和客户端的版本上传协议

20-30 定义上传版本列表协议

20-31 服务器数据储存和处理

20-32 客户端和服务器同步操作

20-33 客户端本地存储和服务端版本还原

20-34 实现git log

20-35 实现git status

20-36 定义客户端git pull协议

20-37 定义服务端git pull协议

20-38 测试客户端和服务器的git pull

20-39 客户端发送验证冲突请求

20-40 服务端验证冲突请求

20-41 客户端向服务端请求版本列表

20-42 只提交有变动的文件

20-43 整合库

20-44 整合日志系统到库

20-45 c手把手入门硬核c语言完结