🐮 全网搜集C/C++入门练手项目实战,包含100+经典项目,大厂面经,学习视频,推荐书籍,面试题/算法题
本repo搜集全网适合C/C++新手学习的入门项目,整理收纳开发者开源的小项目、工具、框架、游戏等,帮助大家更好地学习c/c++。
所有数据来源于互联网。所谓取之于互联网,用之于互联网。
如果涉及版权侵犯,请邮件至 [email protected] ,我们将第一时间处理。
如果您对我们的项目表示赞同与支持,欢迎您 lssues 我们,或者邮件 [email protected] 我们,更加欢迎您 pull requests 加入我们。
感谢您的支持!
目录
🏗 项目实战(排名不分先后)
100个一学就会的项目,含源码
No. | project name | introduce |
---|---|---|
1 | MyTinySTL | 基于 C++11 的 tinySTL,这是我的第一个项目,使用了中文文档与中文注释,有不规范或不当的地方还请海涵。刚开始是作为新手练习用途,直到现在已经发布了 2.x.x 版本。实现了大部分 STL 中的容器与函数. |
2 | calculator | Windows计算器应用程序是一个用c++和c#编写的现代Windows应用程序,预装在Windows中。该应用程序提供标准、科学和编程计算器功能,以及各种计量单位和货币之间的一套转换器。 |
3 | FreeNOS | FreeNOS (Free Niek's Operating System)是一个实验性的基于微内核的操作系统,用于学习,用c++编写。您可以根据GPLv3的条款随意使用该代码。 |
4 | musikcube | 一个跨平台的,基于终端的音频引擎,库,播放器和服务器写在c++中。 |
5 | tmux | Tmux是一种终端多路复用器:它允许在一个屏幕上创建、访问和控制多个终端。Tmux可以从屏幕上分离,在后台继续运行,然后重新连接。 |
6 | netdata | Netdata的分布式实时监控代理从零配置的系统、硬件、容器和应用程序中收集数以千计的指标。它永久地运行在您所有的物理/虚拟服务器、容器、云部署和边缘/物联网设备上,并且在事故发生时安装在您的系统上是非常安全的,无需任何准备。 |
7 | How-to-Make-a-Computer-Operating-System | 如何用c++制作计算机操作系统 |
8 | TinyWebServer | Linux下C++轻量级Web服务器 |
9 | Serial-Studio | 多用途串行数据可视化处理程序 |
10 | winmerge | WinMerge 是适用于 Windows 的开源差异和合并工具。 WinMerge 可以比较文件夹和文件,以易于理解和处理的视觉文本格式呈现差异。 |
11 | WizQTClient | 该项目基于Qt,旨在提供一个基于云使用的优秀PKM(个人知识管理)桌面环境。 |
12 | kingpin | 基于IO多路复用和线程池的高性能c++网络库 |
13 | TinyIM | 一个简单的IM客户端和服务器,只有命令行界面 |
14 | TeamTalk | TeamTalk是一款蘑菇街开源的企业内部即时通讯软件,目前支持pc、安卓、IOS、Mac和web多个终端,这是各个版本的代码和部署脚本。 |
15 | flamingo | Flamingo IM 是一款高性能、轻量级的开源即时通讯软件,目前包括服务器端、pc 端、安卓端,微信版本和 IOS 版本目前正在开发中。 |
16 | StopWatch | 高精度计时器 |
17 | smart_ptr | 自己实现智能指针。个人觉得实现智能指针是绝好地练手方案,涉及到模板、对象的生命周期、三/五原则等等。 |
18 | mystl | My STL 实现了 C++11 标准库的部分容器以及算法,同时又对标准库进行扩充。 |
19 | Screenshot | 仿QQ截图,C++实现的截图软件Demo |
20 | ZLToolKit | 一个基于C++11的轻量级网络框架,基于线程池技术可以实现大并发网络IO |
21 | md5 | C语言实现的MD5算法源码 |
22 | epoll | 基于epoll机制的高并发聊天室,c语言实现,代码源于网络仅供学习 |
23 | serialize | 实现的一个简易的 C++ 序列化库 |
24 | tinyserver | C++实现的简单http服务器(进程池+epoll) |
25 | dpool | C++11 实现的动态线程池 |
26 | MysqlPool | MySql数据库的连接池实现,多用户的数据库访问。能够很好的管理数据库的连接 |
27 | FlexibleReflection | 一个使用c++ 11的小型、灵活的运行时反射系统的示例项目 |
28 | CPlusPlus-Playground | 选举制度、注册系统、学生系统、OpenGL的项目 |
29 | Unreal-Engine-Fundamentals | 收集各种虚幻引擎c++基础的小项目 |
30 | mobile-snmp-plusplus | Mobile SNMP++是一个iOS项目,你可以把它包含在你自己的项目中,这样你就可以执行一些SNMP命令。 |
31 | School-Management-System | 学籍管理系统 |
32 | qReader | C++和qml小说阅读器项目 |
33 | 510850111/IM | C语言实现双端即时通讯软件 |
34 | XmlProject | 公交线路查询系统客户端:这是一个项目,C/S架构,服务端为C++,客户端为Qt,XML为小型数据库,主要是为了进行一些XML的操作 |
35 | c_contacts | C语言小项目——通讯录 |
36 | SmartCar | 智能车寻迹小车:2014年暑假做的一个项目,智能车寻迹小车,项目代码两个人完成,我负责图像采集、处理、中线提取、弯道判断等几个部分,项目C语言实现。 |
37 | ZYunfeii/QT | QT(C++)开发小众日记app项目 |
38 | management-system | 通讯录管理系统 |
39 | Algorithm-Exercise | 难度中等的一个C++算法小项目 |
40 | small_project | 算法设计平台 |
41 | Worker | 职工工资信息管理系统 |
42 | Liunx-Timely-communication-project | 在Linux下用C/C++语言开发的即时通讯项目,用了libevent、多线程、mysql等技术 |
43 | MyPoorWebServer | 一款可运行的基于C++ 实现的HTTP服务器,基于《TCPIP网络编程》和《Linux高性能服务器编程》实现的服务器项目。 |
44 | network-dash | 模拟百度网盘实现的一个简单文件传输和下载的c/s模式的项目 |
45 | parse-gcode | 新手C++入门项目: 解析G代码/三维轨迹仿真/机器人仿真/代码行1W+/面向对象风格/涵盖所有C++基础知识 |
46 | PrinterMonitorLib | 这是监控打印机状态的C++ DLL项目,可以方便的查询到当前打印机正在打印的文件状态,可以用于监控文档是否打印成功,打印机是否缺纸,打印机是否异常等状态 |
47 | NeVehicleLicensePlateRecognition | 车牌识别C++项目 |
48 | ZLToolKit | 一个基于C++11的轻量级网络框架,基于线程池技术可以实现大并发网络IO |
49 | librf | 基于C++ Coroutines编写的无栈协程库 |
50 | Qt-studentmanager | C++ Qt 基于数据库Mysql学生信息管理系统 |
51 | timer | C++ 定时器, 基于 C++11, libuv 实现 |
52 | duck_db | c/c++ build a simple b+tree RDMS(利用c/c++ 开发基于B+树的小型关系型数据库 ) |
53 | eddyserver | 基于C++14和ASIO实现高并发TCP网络框架 |
54 | BooksManageSystem | 基于C++实现简易图书管理系统 |
55 | Miaoshuai/netlib | 一个自己封装的基于reactor的c++网络库 |
56 | iEternity/HttpClient | 使用C++11风格,基于libcurl库封装的HTTP客户端。 |
57 | gatsbyd/melon | 基于协程和事件循环的c++网络库 |
58 | niliushall/webServer | 基于C++使用 epoll + threadpool 实现的 webServer,支持GET、POST |
59 | owenliang/task_schedule | (C++)基于图数据结构与拓扑序列的任务调度demo |
60 | Easy-Reactor | Easy-Reactor是一个Linux C++高性能TCP服务框架,基于Reactor模式,支持单线程、多线程Reactor,也支持UDP服务 |
61 | CxxDBC | 基于C++开发的异种数据库跨平台连接中间件. |
62 | starjiang/lce | linux网络编程框架(C++)基于Reactor事件机制,支持线程池,异步非阻塞,高并发,高性能 |
63 | CHATROOM_C | 基于C语言聊天室,可进行文件传输 |
64 | StudentManagementSystem | Student Management System |
65 | logcc | 基于log4cplus封装的简单易用的c++日志库。 |
66 | ScreenRecoder | 这是一个基于FFmpeg使用 C# 、C++ 开发的最简单的屏幕录制软件。 |
67 | weijunji/TCP-CPP | 基于C++实现的用户态TCP协议 |
68 | mxway/ftp | 基于c++实现ftp客户端,服务端程序 |
69 | HighPerformanceConcurrentServer | 基于C++11、部分C++14/17特性的一个高性能并发httpserver,包括日志、线程池、内存池、定时器、网络io、http、数据库连接等模块。模块间低耦合高内聚,可作为整体也可单独提供服务。对各模块提供单元测试,对httpserver整体提供性能测试。 |
70 | Blocks233/Message | C++基于UDP的聊天软件 |
71 |
经典游戏
No. | project name | introduce |
---|---|---|
1 | tinytetris | 重温同年俄罗斯方块 |
2 | GoBangByCpp | C++实现双人对战五子棋项目 |
3 | mazecode | 自动走迷宫:慕课网C++课程封装篇作业,自动走迷宫 |
4 | C-LanguageProjectCombat | 俄罗斯方块:用C语言实现Win32程序,完成俄罗斯方块游戏程序 |
5 | C-LanguageProjectCombat | 学生管理系统 |
6 | AirPlaneGame | cocos2dx做的微信<<飞机大战>>游戏. |
7 | Tank3000 | 坦克大战 |
8 | Big_fight | 球球大作战 |
9 | Gobang | 智能人机五子棋对战:一款AI五子棋项目,C++新手项目实践 — 智能人机五子棋对战。 |
10 | sanguosha | 此项目为三国杀游戏,模拟QQ注册,QQ登录,QQ加好友,QQ聊天,基于C#语言,SQL Server数据库开发, 游戏功能目前已经实现玩家VS人机,已支持英雄:刘备,曹操,孙权,支持穿着装备,武器,战马,杀死对方获得积分 |
11 | SimpleNES | 任天堂红白机模拟器:这是一个用c++编写的NES仿真器 |
12 | Snake-cpp | 用C++写的一个简易贪吃蛇 |
13 | MagicTower | 魔塔:当年很火的一个flash游戏,作者当时正在学习C++(VC++6.0),故移植了过去,纯学习练手 |
14 | DiningSystem | 点餐系统 |
15 | Plants-vs.-Zombies-Online-Battle | 植物大战僵尸多人对战,开发通过反向工程,内嵌钩子和动态链接库注入。两个在线玩家分别作为植物和僵尸进行防御和攻击。 |
16 | PictureMatching | Qt C++实现的王者荣耀风格的连连看程序(基于TD-framwork实现) |
17 | ST_PUZZLE_2.0 | ST-PUZZLE |
18 | mines_sweeper | 开源项目:扫雷(Qt开发) |
19 | 2048.cpp | 功能齐全的终端版游戏《2048》用c++编写 |
20 | Ancient-Spider | 蜘蛛纸牌游戏 |
21 | Qt_FreeCell | Qt_FreeCell(纸牌游戏空当接龙C++/Qt实现)Topics |
22 | CppFishingCode | 纯C++ 捕鱼游戏 |
23 | Rhythm | 用Cocos2d-x开发跨平台游戏,高仿《节奏大师》游戏 |
24 | mirror | 传奇挂机类游戏 |
25 | 3d-racing-games-demo | 使用 C++ 和 OpenGL 实现简单的 3D 赛车游戏 |
26 | Contra | 使用图形库easyx写的c++魂斗罗游戏 |
27 | Maze | 基于C++-EasyX编写的益智小游戏-迷宫 |
28 | shushabgyuanyue/c | N个小游戏项目(适合初学者) |
29 | game_2048 | 在实验楼学习的C语言项目,2048小游戏。 |
30 | JumpByJump | C++版微信跳一跳小游戏辅助程序 |
31 | ChineseChesses | 双人象棋小游戏 - C++ - Windows GDI |
32 | Word-Games | C++实现带GUI背单词小游戏 |
33 | NumberGuess | 基于C++的猜数字小游戏 |
34 | Puzzle | C/C++拼图小游戏 |
35 | loliRun | 萝莉酷跑小游戏 |
36 | Study-of-C- | 学堂在线C++ of Linux 的小项目,使用随机数库编写的简单控制台游戏(猜数游戏) |
37 | jijinlong/colors | 一款实用Lua+C++ 的消除类小游戏 |
38 | Cgames | c语言经典200多个有趣的程序和游戏 |
39 | Shoot-The-Chicken-3D | 基于c++控制台的3D第一人称射击(FPS)游戏,项目包含软件渲染器、游戏引擎层、游戏逻辑层 |
40 | bounce-ball | 弹弹乐-C语言控制台游戏 |
41 | shining-yang/DDZ | DDZ(斗地主)- Win32 C/C++编写的斗地主游戏程序 |
42 | sudoku | C++实现的跨平台数独游戏,命令行操作易上手,可以在开发间隙用来放松身心。数百行代码,初学者也可以轻松掌握。 |
43 | 2019-2020-tjse-sour-knight | 2019-2020 同济软工大项目 c++游戏 |
44 | LianZhu | 海底连珠,基于Cocos2d-x-3.3游戏引擎,C++版本的一个五子连珠消除类游戏,可以学习基本的Cocos2d-x游戏开发,用到A*(A star)寻路算法,消除算法。 |
45 | historyme/fmj_cpp | 步步高伏魔记游戏 c++版本 |
46 | SimpleNES | 一个用 C++ 编写的 NES 模拟器,只是为了好玩。超级马里奥兄弟。反对派、冒险岛、忍者外传、营救小组、洛克人和洛克人 2、马里欧兄弟。、大金刚和小金刚、战城、报童、塞尔达传说、吃豆子、网球、励志单车 |
47 | CPP-DrawGuess | 一个C++编写的,使用C/S架构的、实时、可选房间、多人同房的你画我猜游戏 |
48 | CoinFlap | C++金币翻转游戏 |
49 | richman | c++写的大富翁游戏,适合入门初学者。 |
50 | CubeMiniGame | Cube Engine是一个用c++编写的小型图形引擎,由OpenGL和Vulkan提供支持,我开发它是为了提高我的CG知识和通用编程技能(通用算法,代码风格,设计模式)。 |
51 | ArenaofValor | 同济大学软件学院18级C++大项目——王者荣耀 |
🏇 大厂面经
- 字节跳动 data后台研发 面经
- 字节跳动 data后端 面经
- 字节跳动 直播中台后端研发 面经
- 字节跳动广告后端面经
- 字节跳动广告系统面经
- 字节跳动的六次面试经历,终不过
- 字节跳动系统工程师 data面经
- 小米一二面(已offer)
- 网易互娱游戏研发,一面、二面 + 些许感慨(已意向)
- 腾讯天美C++后台一面凉经
- 金山云C++开发 一面二面面经 已意向
- 百度 正式批 面试
- 竞技世界 提前批(已OC)
- 深信服C++二面-面经:40min(发面经许愿offer)
🗂 经典资料推荐
📚 书籍推荐
- 《深入理解C++11:C++11新特性解析与应用》
- 《C++入门经典(第10版)》
- 《C++ Primer Plus 第6版 中文版(异步图书出品)》
- 《清华计算机图书译丛:精通C++(第9版)》
- 《C++高级编程(第4版)》
- 《C++游戏编程入门(第4版)(异步图书出品)》
- 《STL源码剖析》
- 《C++程序设计:原理与实践(基础篇)(原书第2版)》
- 《Accelerated C++中文版》
- 《C++编程思想(两卷合订本)》
- 《中文版Effective STL:50条有效使用STL的经验》
- 《C++编程剖析:问题、方案和设计准则》
- 《C++ Templates中文版》
- 《C++设计新思维》
- 《C++模板元编程》
- 《C++并发编程实战》
- 《C++程序设计语言(第1-3部分)(原书第4版)》
- 《C++标准库(第2版)》
- 《Essential C++》
- 《C++ 语言的设计与演化》
- 《深度探索C++ 对象模型》
- 《泛型编程与STL》
📁 学习文档
📀 视频
从C/C++项目实战到Linux服务器开发 ~ 22课时
🍳 软件
编译器
C/C++编译器列表
- Clang :由苹果公司开发的
- GCC:GNU编译器集合
- Intel C++ Compiler :由英特尔公司开发
- LLVM :模块化和可重用编译器和工具链技术的集合
- Microsoft Visual C++ :MSVC,由微软公司开发
- Open WatCom :Watcom,C,C++和Fortran交叉编译器和工具
- TCC :轻量级的C语言编译器
在线编译器
在线C/C++编译器列表
- codepad :在线编译器/解释器,一个简单的协作工具
- CodeTwist:一个简单的在线编译器/解释器,你可以粘贴的C,C++或者Java代码,在线执行并查看结果
- coliru :在线编译器/shell, 支持各种C++编译器
- Compiler Explorer:交互式编译器,可以进行汇编输出
- CompileOnline:Linux上在线编译和执行C++程序
- Ideone :一个在线编译器和调试工具,允许你在线编译源代码并执行,支持60多种编程语言。
调试器
C/C++调试器列表
- Comparison of debuggers :来自维基百科的调试器列表
- GDB :GNU调试器
- Valgrind:内存调试,内存泄露检测,性能分析工具。
集成开发环境(IDE)
C/C++集成开发环境列表
- AppCode :构建与JetBrains’ IntelliJ IDEA 平台上的用于Objective-C,C,C++,Java和Java开发的集成开发环境
- CLion:来自JetBrains的跨平台的C/C++的集成开发环境
- Code::Blocks :免费C,C++和Fortran的集成开发环境
- CodeLite :另一个跨平台的免费的C/C++集成开发环境
- Dev-C++:可移植的C/C++/C++11集成开发环境
- Eclipse CDT:基于Eclipse平台的功能齐全的C和C++集成开发环境
- Geany :轻量级的快速,跨平台的集成开发环境。
- IBM VisualAge :来自IBM的家庭计算机集成开发环境。
- Irony-mode:由libclang驱动的用于Emacs的C/C++微模式
- KDevelop:免费开源集成开发环境
- Microsoft Visual Studio :来自微软的集成开发环境
- NetBeans :主要用于Java开发的的集成开发环境,也支持其他语言,尤其是PHP,C/C++和HTML5。
- Qt Creator:跨平台的C++,Javascript和QML集成开发环境,也是Qt SDK的一部分。
- rtags:C/C++的客户端服务器索引,用于 跟基于clang的emacs的集成
- Xcode :由苹果公司开发
- YouCompleteMe:一个用于Vim的根据你敲的代码快速模糊搜索并进行代码补全的引擎。
构建系统
- Bear :用于为clang工具生成编译数据库的工具
- Biicode:基于文件的简单依赖管理器。
- CMake :跨平台的免费开源软件用于管理软件使用独立编译的方法进行构建的过程。
- CPM:基于CMake和Git的C++包管理器
- FASTBuild:高性能,开源的构建系统,支持高度可扩展性的编译,缓冲和网络分布。
- Ninja :专注于速度的小型构建系统
- Scons :使用Python scipt 配置的软件构建工具
- tundra :高性能的代码构建系统,甚至对于非常大型的软件项目,也能提供最好的增量构建次数。
- tup:基于文件的构建系统,用于后台监控变化的文件。
静态代码分析
提高质量,减少瑕疵的代码分析工具列表
- Cppcheck :静态C/C++代码分析工具
- include-what-you-use :使用clang进行代码分析的工具,可以#include在C和C++文件中。
- OCLint :用于C,C++和Objective-C的静态源代码分析工具,用于提高质量,减少瑕疵。
- Clang Static Analyzer:查找C,C++和Objective-C程序bug的源代码分析工具
- List of tools for static code analysis :来自维基百科的静态代码分析工具列表
🌐 网站推荐
- C++ Standard Library - 一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分
- Standard Template Library - 标准模板库
- C POSIX library - POSIX系统的C标准库规范
- ISO C++ Standards Committee - C++标准委员会
- C++ FAQ − C++ 常见问题
- Free Country − Free Country 提供了免费的 C++ 源代码和 C++ 库,这些源代码和库涵盖了压缩、存档、游戏编程、标准模板库和 GUI 编程等 C++ 编程领域。
- C and C++ Users Group − C 和 C++ 的用户团体提供了免费的涵盖各种编程领域 C++ 项目的源代码,包括 AI、动画、编译器、数据库、调试、加密、游戏、图形、GUI、语言工具、系统编程等
- LearnCpp - 免费学习c++编程
- CodeCogs - CodeCogs是一项协作的开放源码库,C/C++的数值方面的组件
- codeproject - codeproject提供的C/C++资源代码项目
- thoughtco - 游戏有关的C++源代码
- Free C/C++ Libraries - 免费C++源代码和其它有用的工具
- The C++ Standard Library - 这是一个收集了数C/C++网站链接列表的网页
- cplusplus - C++学习网站
- C++ Source Codes - 这是一个全面的关于C++的345个源代码清单