有无推荐C 初学者的网站?

发布于:2023-06-29 18:56:26

在 C++ 的学习过程中离不开阅读大量的免费文档和网站,今天在此分享一些值得收藏的C++学习网站,希望对大家有所帮助。

第一个 cplusplus

http://www.cplusplus.com/

一个优秀的 C++ 学习网站,除了提供相应的教程之外,还有一个很棒的论坛。和其它网站相比,它的价值更多体现在参考上,因为里面解释了许多编程概念。

第二个 C++ Source Codes

https://people.sc.fsu.edu/~jburkardt/cpp_src/cpp_src.html

目前已经有1000多个比较全面的关于 C++ 的源代码清单

第三个 C++ FAQ

https://isocpp.org/faq

C++ 常见问题,项目工程中遇到的很多问题都有,涉及 C++ 高效编程

第四个 cppreference

http://www.cplusplus.com/doc/tutorial/

cppreference是一个免费网站,基本上提供了所有的c++/c的标准库函数实例和介绍。

第五、 标准模板库

https://www.geeksforgeeks.org/the-c-standard-template-library-stl/

其他网站:

Free C/C++ Libraries

https://www.programmerworld.net/resources/c_library.htm

免费 C++ 开源库和其它有用的工具

Free Country

https://www.thefreecountry.com/sourcecode/cpp.shtml?spm=5176.10731542.0.0.4fc35bde2jHhz4

提供了免费的 C++ 源代码和 C++ 库,这些源代码和库涵盖了压缩、存档、游戏编程、标准模板库和 GUI 编程等 C++ 编程领域。

C and C++ Users Group

http://www.hal9k.com/cug/?spm=5176.10731542.0.0.4fc35bde2jHhz4

C 和 C++ 的用户团体提供了免费的涵盖各种编程领域 C++ 项目的源代码,包括 AI、动画、编译器、数据库、调试、加密、游戏、图形、GUI、语言工具、系统编程等

codeproject提供的C/C++资源代码项目

https://www.codeproject.com/

codeproject是国外一个免费公开自己写的代码与程序的优秀网站,这个网站的所有用户都可以发布自己的写过的代码,程序,包括详细的文档说明。比国内的cnblog、csdn都要好,如果要说缺点的话,就是全英文的,当然大部分还是比较容易理解的。

游戏有关的C++源代码

https://www.thoughtco.com/

这是一个收集了数C/C++网站链接列表的网页

http://www.josuttis.com/libbook/examples.html

网友整理:C++ 学习资料,含C++ 11 / 14 / 17 / 20 / 23 新特性、入门教程、推荐书籍、优质文章、学习笔记、教学视频等

https://github.com/0voice/cpp_new_features

来源:Cpp小茶馆:C++学习必备网站推荐收藏

同时给大家整理了一些github上热门C++开源项目,非常适合基础性练习,收藏之后不要忘记练习!!!

一、基础

1.1 一个项目入门 C++ 足以:CPlusPlusThings

CPlusPlusThings 是国人开源一个 C++ 学习项目。它系统地将 C++ 学习分为了【基础进阶】、【实战系列】、【C++2.0 新特性】、【设计模式】和【STL 源码剖析】、【并发编程】、【C++ 惯用法】、【学习课程】、【工具】、【拓展】。

作为一个全面系统的 C++ 学习项目,CPlusPlusThings 是优秀的,它合理地安排了 10 Days 的实战部分,在实战中了解语法和函数用法,唯一不足的是,在注释部分有些不尽人意,对部分新手程序员并不是很友好。【基础进阶】部分内容:

const 那些事static 那些事decltype 那些事引用与指针那些事宏那些事

GitHub 地址→https://github.com/Light-City/CPlusPlusThings

1.2 基础部分之算法:C-Plus-Plus

C-Plus-Plus 是收录用 C++ 实现的各种算法的集合,并按照 MIT 许可协议进行授权。这些算法涵盖了计算机科学、数学和统计学、数据科学、机器学习

、工程等各种主题。除外,你可能会发现针对同一目标的多个实现使用不同的算法策略和优化。

GitHub 地址→https://github.com/TheAlgorithms/C-Plus-Plus二、进阶

2.1 现代 C++:modern-cpp-tutorial

modern-cpp-tutorial 是现代 C++ 教程,它的目的是提供关于现代 C++(2020 年前)的相关特性的全面介绍。除了介绍了代码之外,它还尽可能简单地介绍了其技术需求的历史背景,这对理解为什么会出现这些特性提供了很大的帮助。

GitHub 地址→https://github.com/changkun/modern-cpp-tutorial

2.2 进阶指南:CppTemplateTutorial

CppTemplateTutorial 为中文的 C++ Template 的教学指南。与知名书籍 C++ Templates 不同,该系列教程将 C++ Templates 作为一门图灵完备的语言来讲授,以求帮助读者对 Meta-Programming 融会贯通。本项目写作初衷,就是通过 “编程语言” 的视角,介绍一个简单、清晰的 “模板语言”。我会尽可能地将模板的诸多要素连串起来,用一些简单的例子帮助读者学习这门 “语言”,让读者在编写、阅读模板代码的时候,能像 if(exp) { dosomething(); } 一样的信手拈来,让 “模板元编程” 技术成为读者牢固掌握、可举一反三的有用技能。

适合熟悉 C++ 的基本语法、使用过 STL、熟悉一些常用的算法,以及递归等程序设计方法的 C++ 学习者阅读。虽然项目章节文章写的深入浅出,不过唯一的遗憾是尚未完成所有章节内容。进度如下:

0.前言1.Template 的基本语法2.模板元编程基础3.深入理解特化与偏特化4.元编程下的数据结构与算法 (尚未开始)5.模板的进阶技巧(尚未开始)6.模板的威力:从 foreach, transform 到 Linq(尚未开始)7.结语:讨论有益,争端无用(尚未开始)

GitHub 地址→https://github.com/wuye9036/CppTemplateTutorial三、动手实战

3.1 来实践一下:MyTinySTL

当你学习完 C++ 的“书本”知识后,是不是有些手痒了呢?MyTinySTL 这个注释详细、实践夯实基础的项目便是你 C++ 学习之旅的下一站。作为新手练习用途,MyTinySTL 的作者 Alinshans 用 C++11 重新复写了一个小型 STL(容器库+算法库)。代码结构清晰规范、包含中文文档与注释,并且自带一个简单的测试框架,适合 C++ 新手来实践一番。

GitHub 地址→https://github.com/Alinshans/MyTinySTL3.2 重温同年俄罗斯方块:Tinytetris

Tinytetris 是一个用 C++ 编写的终端版俄罗斯方块游戏。它提供了两个版本的源码,分为注释版和库版,注释较多易于理解和学习。

GitHub 地址→https://github.com/taylorconor/tinytetris

3.3 学习下大佬们的代码:calculator

微软开源的 Windows 系统预装的计算器工具。该工具提供标准、科学、程序员计算器的功能,以及各种度量单位和货币之间的转换功能。快来看看微软工程师编写的代码吧!学习大厂的编码规范、项目结构之类的,提高阅读源码的能力。英文的项目且没有讲解部分,需要通过阅读源码学习,难度较高。

GitHub 地址→https://github.com/microsoft/calculator

作者:HelloGithub 链接:https://www.zhihu.com/question/332778359/answer/2228040329

下面谈下适合C++入门级保姆教程,只要你肯坚持,没有什么学不好。

书籍+视频+项目!

视频推荐黑马基础+侯捷大佬全集进阶!

按照这个路线去学习C++,每个阶段都帮你规划好了学习时间,只要你努力且认真的去学了, 保证帮你既高效又扎实的学好C++:

一、C++基础(3个月)

1、面向对象的三大特性:封装、继承、多态

2、类的访问权限:private、protected、public

3、类的构造函数、析构函数

、赋值函数、拷贝函数

4、移动构造函数与拷贝构造函数对比

5、深拷贝与浅拷贝的区别

6、空类有哪些函数?空类的大小?

7、内存分区:全局区、堆区、栈区、常量区、代码区

8、C++与C的区别

9、struct与class的区别

10、struct内存对齐

11、new/delete与malloc

/free的区别

12、内存泄露的情况

13、sizeof与strlen

对比

14、指针与引用的区别

15、野指针产生与避免

16、多态:动态多态、静态多态

17、虚函数实现动态多态的原理、虚函数与纯虚函数

的区别

18、继承时,父类的析构函数是否为虚函数?构造函数能不能为虚函数?为什么?

19、静态多态:重写、重载、模板

20、static关键字:修饰局部变量、全局变量、类中成员变量、类中成员函数

21、const关键字:修饰变量、指针、类对象、类中成员函数

22、extern关键字:修饰全局变量

23、volatile关键字:避免编译器指令优化

24、四种类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast

25、右值引用

26、std::move函数27、四种智能指针

及底层实现:auto_ptr、unique_ptr、shared_ptr、weak_ptr

28、shared_ptr中的循环引用怎么解决?(weak_ptr)

29、vector与list比较

30、vector迭代器失效的情况

31、map与unordered_map对比

32、set与unordered_set对比

33、STL容器空间配置器

参考书籍:《C++ Primer》(第5版)、《STL源码剖析》、《深度探索C++对象模型》

下载地址:

链接:https://pan.baidu.com/s/1qqAR6iqjur1sfmzeZjcrwg提取码m6gx

二、计算机网络

(1个月)

1、OSI7层网络模型:应用层、表示层、会话层、运输层、网络层、链路层

、物理层

2、TCP/IP四层网络模型:应用层、运输层、网际层、接口层

综合OSI与TCP/IP模型,学习五层网络模型:

从上向下架构:应用层、运输层、网络层、链路层、物理层

链路层:

3、MTU

4、MAC地址

网络层:

5、地址解析协议

6、为啥有IP地址还需要MAC地址?同理,为啥有了MAC地址还需要IP地址?

7、网络层转发数据报的流程

8、子网划分子网掩码

9、网络控制报文协议ICMP

10、ICMP应用举例:PING、traceroute

运输层:

11、TCP与UDP的区别及应用场景

12、TCP*部报文格式(SYN、ACK、FIN、RST必须知道)

13、TCP滑动窗口

原理

14、TCP超时重传时间选择

15、TCP流程控制

16、TCP拥塞控制

(一定要弄清楚与流量控制的区别)

17、TCP三次握手及状态变化。为啥不是两次握手?

18、TCP四次挥手及状态变化。为啥不是三次挥手?

19、TCP连接释放中TIME_WAIT状态的作用

20、SYN泛洪攻击。如何解决?

21、TCP粘包

22、TCP心跳包

23、路由器与交换机的区别

24、UDP如何实现可靠传输

应用层:

25、DNS域名系统

。采用TCP还是UDP协议?为什么?

26、FTP协议(了解)

27、HTTP请求报文与响应报文*部结构

28、HTTP1.0、HTTP1.1、HTTP2.0对比

29、HTTP与HTTPS对比

30、HTTPS加密流程

31、方法:GET、HEAD、POST、PUT、DELETE

32、状态码:1、2、3、4、5**

33、cookie与session区别

34、输入一个URL到显示页面的流程(越详细越好,搞明白这个,网络这块就差不多了)

参考书籍:《计算机网络》(第5版)、《TCP/IP详解卷1:协议》、《图解HTTP

下载地址:链接:https://pan.baidu.com/s/1fRYNn3E0yEOLiQUSyBlxKg提取码:69dc

三、操作系统

(1个月)

1、进程与线程区别

2、线程同步的方式:互斥锁、自旋锁

、读写锁、条件变量

3、互斥锁与自旋锁的底层区别

4、孤儿进程与僵尸进程

5、死锁及避免

6、多线程与多进程比较

7、进程间通信

:PIPE、FIFO、消息队列、信号量、共享内存、socket

8、管道与消息队列对比

9、fork进程的底层:读时共享,写时复制

10、线程上下文切换的流程

11、进程上下文切换的流程

12、进程的调度算法

13、阻塞IO与非阻塞IO

14、同步与异步的概念

15、静态链接与动态链接的过程

16、虚拟内存

概念(非常重要)

17、MMU地址翻译的具体流程

18、缺页处理过程

19、缺页置换算法:最久未使用算法、先进先出算法、最佳置换算法

ps:操作系统的内容看起来不是很多,实际上每个问题答案的底层原理要弄懂还是很考验基本功的。比如:互斥锁与自旋锁的区别,实际上涉及到阻塞时线程的状态是不一样的。互斥锁阻塞的线程是挂起的,此时系统会优先执行其它可执行的线程,就会将阻塞的线程切换到可执行线程,而当临界区执行的时间非常短时,此时线程切换频繁、开销较大,此时就会采用自旋锁的方式,让阻塞的线程处于忙等状态。

参考书籍:《深入理解计算机系统

下载地址:链接:https://pan.baidu.com/s/1RoDN317X-C6izxY6CwuxTA提取码:iy8u

四、网络编程(1个月)

1、IO多路复用:select、poll

、epoll的区别(非常重要,几乎必问,回答得越底层越好,要会使用)

2、手撕一个最简单的server端服务器(socket、bind、listen、accept这四个API一定要非常熟练)

3、线程池

4、基于事件驱动的reactor模式

5、边沿触发与水平触发的区别

6、非阻塞IO与阻塞IO区别

参考书籍:《Unix网络编程

ps:网络编程掌握以上几点就够了,要搞明白还是要花很久时间的。

下载地址:链接:https://pan.baidu.com/s/1MD9WAAmSOCz5fhlUMU0bsg密码:bwyt

五、数据结构

与算法及刷题(2个月)

1、数组

2、链表

3、栈

4、队列

5、堆

6、二叉树

:二叉搜索树、平衡树、红黑树

7、B树、B+树

8、哈希表及哈希冲突9、排序算法:冒泡排序、简单选择排序、插入排序、希尔排序、归并排序

、堆排序、快速排序

(要求能够面试时手写出堆排序和快速排序)

10、二分法:旋转数组找target

11、回溯法:全排列、复原IP地址

12、动态规划(掌握基本的动态规划的几个题其实就够了,如:斐波那契数列

、接雨水、股票的最佳买入时机)

参考书籍:《图解算法》《剑指offer

ps:建议刷题与数据结构算法同时进行,这样理解得更深入。刷题网站leetcode,刷完《剑指offer

》其实就能解决大部分面试手撕了。

书籍下载:链接:https://pan.baidu.com/s/1GZEp8KI1Fm0U4Uek7BOWAw

提取码:am4o

六、mySQL数据库(7天~15天)

1、数据存储引擎:InnoDB、myISAM、Memory

2、数据库索引

类型及原理:B+树索引、哈希表索引

3、锁:悲观锁乐观锁

4、事务:事务的四大特性(ACID)、事务并发的三大问题、事务隔离级别及实现原理

5、多版本并发控制实现机制(MCVV)原理

参考书籍:《高性能MySQL》

ps:这里也可以参考本人写的博客:mysql知识点总结。

下载地址:链接:https://pan.baidu.com/s/1-_9Cwq1qCxAr041nDWe0sg提取码:fy0y

七、项目(2个月)

如果时间够的话就可以写一个项目,当然大部分人写的项目都是一个烂大街的项目,也就是“web高性能服务器”。其实就是根据陈硕大神写的《Linux高性能服务器编程:使用muduo C++网络库》进行改编,当然啦,读懂这本书还是很耗时的,学习其中的思想也会受益匪浅的。

总结

按照上面推荐的内容来学习的话,要学习得深入一点的话1年的时间肯定需要的,甚至2年也不足为其。当然对于非科班的学生来说,大部分都没有充足的时间的,这时候建议尽量把C++基础、计算机网络、操作系统、网络编程、数据结构与算法这五个部分的内容学得很扎实,大概6个月的时间。

八、推荐阅读书单

正如侯捷老师所说C++ 相关的书籍也非常多,如天上繁星。 广博如四库全书者有 《The C++Programming Language》 《C++ Primer》,深奥如山重水复者有《The Annotated C++ Reference Manual》、《Inside The C++ Object Model》,细说历史者有《The Design And Evolution Of C++》、《Rumiations on C++》,独沽一味者有《Polymorphism in C++》、《Genericity in C++》,独树一帜者有《Design Patterns》、《C++ FAQs》,程序库大全有之《The C++ Standard Library》.....

至于书单的话,可以看下这个C++**全书单,包含几十本经典的PDF和下载方式:

(PS:侯捷 C++ 视频课程一直都被看过的同学广为推荐,最近发现 B 站关于侯捷老师的 C++ 视频课程几乎全部被下架了,于是自己搜集了一套非常全的视频,大家赶紧去下载保存备用

他们让知识的传播变得更加的便捷,降低了后来者的学习门槛,当然啦也变相加重了内卷化.

最后给大家介绍一份计算机经典书籍,送大家一份硬核书籍资源:读大学跟工作期间,我买了很多书,大部分是一些技术书籍,也收集了这些书籍的电子版,都在这里,现在免费share给大家,包括了计算机类常用电子书,包括C,C++,Java,Python,Java,Linux,Go等,希望大家能认真阅读。点击下方链接直达获取:

码字不易,硬核码字更难,希望大家不要吝啬自己的鼓励,给我 :

@码农出击

一个点赞,鼓励下我!


免责声明:本站所有内容及图片均采集来源于网络,并无商业使用,如若侵权请联系删除。

上一篇:京华假日湾C区(珠海金湾·京华假日湾C区)*页网站丨楼盘详情-价格-户型-配套

下一篇:有哪些高质量的适合新手学习的C 交流社区或网站吗?

资讯 观察行业视觉,用专业的角度,讲出你们的心声。
MORE

I NEED TO BUILD WEBSITE

我需要建站

*请认真填写需求信息,我们会在24小时内与您取得联系。