当前位置:首页 > 公众号精选 > 程序喵大人
[导读]经常有一些小伙伴问我有没有C学习路线的相关文章分享一下,对此我特意整理了一张C学习路线图分享给大家!直接看图:高清图片,请添加程序喵微信获取图中我分了11个板块:C语言入门基础知识C基础C进阶C新特性操作系统编译链接C项目推荐工具编码规范推荐网站推荐书籍具体如下:C语言入门基础知...

经常有一些小伙伴问我有没有C 学习路线的相关文章分享一下,对此我特意整理了一张C 学习路线图分享给大家!


直接看图:

高清图片,请添加程序喵微信获取



图中我分了11个板块:

  • C语言入门基础知识

  • C 基础

  • C 进阶

  • C 新特性

  • 操作系统

  • 编译链接

  • C 项目

  • 推荐工具

  • 编码规范

  • 推荐网站

  • 推荐书籍


具体如下:


C语言入门基础知识

使用C 不可避免的需要用到C语言,所以C语言的基础知识我们也需要了解,主要有:

  • 数据类型

  • 流程控制

  • 函数

  • 指针

  • 内存布局

  • 结构体、共用体

  • 文件操作

  • 回调函数


C 基础

这里整理了一些C 必须要知道的基础知识,主要有:

  • constexpr

  • namespace

  • 引用与指针的区别

  • new/delete、new[]/delete[]

  • C/C 混合编程

  • 类的封装

  • class与struct的区别

  • 面向对象编程思想

  • 构造和析构

  • 拷贝构造、移动构造

  • 赋值构造、移动赋值

  • 四种强制类型转换

  • 静态成员

  • 对象管理

  • 函数重载

  • 友元函数与友元类

  • 操作符重载

  • 继承与多继承

  • 多态

  • 虚函数与抽象类

  • 函数模板与类模板

  • 输入输出类

  • 异常处理


C 进阶

我把下面的一些知识归为进阶知识点,可能你学完了也没进阶到哪里去,但是也是进阶必备知识点,主要有:

  • new/delete、new[]/delete[]为什么要配对使用

  • RAII特性

  • 智能指针

  • 内存泄漏的调试

  • STL

    ♦️ vector

  • resize

  • reserve

  • capacity

  • clear

  • swap

  • at

        ♦️ array

        ♦️ map

        ♦️ unordered_map

        ♦️ list

        ♦️ tuple


C 新特性

现在C 开发基本上都会使用C 11,而且C 新特性在面试时也是面试官常问的知识点,这里我总结了一些必须要知道的C 新特性:

  • auto/decltype

  • 列表初始化

  • 左值、右值、左值引用、右值引用

  • 移动语义、完美转发

  • std::function、std::bind

  • lambda表达式

  • std::thread

  • std::lock_guard、std::unique_lock

  • std::shared_ptr、std::unique_ptr

  • std::mutex

  • 原子操作

  • enum class

  • 条件变量

  • nullptr

  • chrono


操作系统

操作系统非常重要,要学好C 就一定要打好操作系统的基础,但操作系统我们也没必要全都钻到细节里去,重点攻克下面几个知识点即可:

  • 进程与线程的区别

  • 进程管理与调度

  • 内存管理

  • 并发与同步

  • 文件I/O


工具

这里推荐下我在开发过程中经常会用到的几个工具:

  • 调试工具:gdb、lldb

  • 构建工具:Cmake、bazel

  • 静态代码检测工具:cppcheck、Clang-Tidy、SonarQube

  • 内存检测工具:valgrind、ASan

  • profiling工具:gperftools、perf


编码规范

使用一门语言一定要了解一下它常用的编码规范,有了编码规范代码写的才能稍微漂亮一点,目前多数C 开发团队都会参考Google编码规范来写代码。


编译链接知识点

学习C 一定要了解一些编译和链接的知识,如何连一些常见的编译链接错误都解决不了,那怎么能是个合格的C 程序员呢?

  • 预处理、编译、汇编、链接

  • 静态链接

  • 动态链接

  • Debug与Release的区别


C 项目

光学开车不行,你得上路;光学理论知识不行,得实践呀!



可能普通学生不知道做个什么项目?我有个想法,可不可以做这样一个小东西,输入是一段人物视频,输出也是一段视频,但是输出的视频中会对人物做一些特效处理,比如画一个人脸框,添加一些字幕,贴一个动画贴纸,贴个滤镜等。


在撸项目的过程中,应该会遇到很多问题:

  • 如何解码视频?是不是要引入个第三方库?怎么才能在工程中接入第三方库?如何编译,如何链接?

  • 如果编码视频?是不是又要引入个第三方库?

  • 如何画一个人脸框?是不是需要先识别到人脸?怎么识别人脸?是不是要引入三方人脸识别库?

  • 如何添加字幕?如何添加动画?如何贴个滤镜呢?链接个ffmpeg?


你还会遇到一些问题:


如何制定这个项目的编码规范呢?使用什么编码风格,你可能需要Google编码规范。

项目最好统一使用C 11新特性,可以看这个:《c 11新特性,所有知识点都在这了!》


如何设计这个项目的架构呢?这是个技术活,也是个经验活,你可以参考参考别的项目?或者自底向下,走一步看一步,哪个模块的代码写完后看着不顺眼了重构一波,一般我看自己两个月前写的那些代码都会感到别扭,这时就可以考虑考虑学习一波设计模式!


项目的功能越来越多,逻辑越来越复杂,bug会越来越多,如何调试这些代码?你可能需要看看这个:《我是怎么调试代码的?》


项目功能很多,这时你会接触到多线程,同步,死锁等概念,如何设计多线程,使用线程池吗?如何做好同步,解决数据竞争问题,是使用原子操作,还是使用互斥锁等。使用锁的过程中如何避免死锁,如果出现了死锁怎么定位呢?C 线程池的实现之格式修订版


功能增多,性能肯定越来越差,如何做好性能优化,如何更好的管理内存?使用什么工具来做性能分析呢?可能需要看看这个《这么多性能调优工具,看看你知道几个?》


相信撸完这个项目后,你的C 也可以算作入门了吧!


再推荐几个我常用的网站:

  • https://cppinsights.io/

  • https://godbolt.org/

  • http://www.sunistudio.com/cppfaq/


再推荐基本个人认为比较优质的书籍:

  • 《C Primer Plus》

  • 《Effective C 》

  • 《Effective STL》

  • 《Effective Modern C 》

  • 《STL源码剖析》

  • 《深入理解计算机系统》

  • 《现代操作系统》


再引用在一个论坛中看到的C 学习路线,看着蛮有道理推荐给大家:

我提供一条线吧,针对C/C 以及针对LINUX后端服务器开发和分布式系统开发这条线:

0. 斯坦福的《编程范式》课程百度一下很多资源

1.《c primer》1个月刷完第一遍做课后习题答案看《C primer习题集》

2.《EffectiveC 》1个月刷完第一遍

3.(可选)《CSAPP》的Tinyweb浏览器实验(这个其实更多是C但是还是建议做一下原因后面说)(1个月)

4.跟MIT68242012年spring的分布式系统课程做完它的lab学习其代码课程主页:https://pdoscsailmitedu/archive/6824-2012/indexhtml(2个半月)

4a. (可选)抛弃lab中助教提供的框架代码自己实现一套完整的tinydistributedfilesystem(2个月)

5. 陈硕大牛的《Linux多线程服务端编程使用muduoC 网络库》刷书 练习认认真真的分析学习muduo网络库(2个月)

6. 第3、第4、第5步中遇到的问题去针对性看《C primer》和《EffectiveC 》中相对应的章节

7. 学习过程中好好利用GOOGLE、STACKOVERFLOW

好啦到这里大概C 理论算入门再往深一点点的水平也有一定的C 的代码量啦个人感觉刷刷题找工作也没啥问题了大概的时间列出来了好好评估下吧

说一句哈真要走C 这条线的话就别把自己局限到C 中啦也把C给学啦看看《APUE》、K
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭