dw如何建设网站,电子商务网站规划开发实训教程,网站空间怎么回事,优秀网络专题内容策划分享本篇写给C初学者#xff0c;作为概览#xff0c;文中仅包含各方面基础知识#xff0c;无深入分析。
C基础概念简介
C编译过程示意图
关键词#xff1a;源文件、预编译、编译、汇编、链接
C工具链总结
cmake项目工程文件是一种中介工程文件#xff0c;可以转化成其他…本篇写给C初学者作为概览文中仅包含各方面基础知识无深入分析。
C基础概念简介
C编译过程示意图
关键词源文件、预编译、编译、汇编、链接
C工具链总结
cmake项目工程文件是一种中介工程文件可以转化成其他不同类型的工程文件如visual studio/XCode工程文件这样在不同操作系统中移植代码会方便很多。
关键词 IDE XCode / Visual Studio / Visual Studio Code 项目工具xcodebuild / msbuild / nmake / cmake / make / ninja 代码组织.xcodeproject / .sln / CMakeLists.txt / Makefile / build.ninja 编译器clang / vc / gcc / g C语法基础概念
函数及作用域
关键词 命名空间 、 前置声明 、 函数声明 、 函数定义 、 main 、程序入口、变量
类及其特性
抽象把公共特性找抽象出来像机动车通常都有4个轮子、一个盒子。封装把相关的数据放到一起像机动车有车厢、座位、轮子等。继承为派生类子类增加个性化的属性像救护车上有蓝色救护灯多态不同派生类对同一个成员函数的实现不一样像跑车和老头乐的驾驶体验定不相同
关键词类定义、公有、可见性、继承、私有、虚函数、纯虚函数、重写、覆盖、override、构造函数、纯虚类
模板及常用泛型
通常用于在不更改类结构的情况改变底层的数据类型。例如 棋盘坐标用整型(int)就可以表示如(2,3)表示2行3列。 地图的坐标就需要用浮点数(float/double)表示如(123.234, 345.456)表示x/y的值。 此时写整型、浮点型的点坐标类明显不合适。那么使用模板可以比较好的解决这个问题
用模板写出的函数或类均属于泛型。C标准库提供的常用泛型类包括
std::vector 动态序列数组常用于随机访问多的场景示例 std::vectorstd::list 链表常用于插入、删除较多的场景示例 std::liststd::deque 双向队列适用于首尾插入及删除较多、及随机访问多的场景示例 std:: deque std::set 集合保证无相同元素的场景示例 std::setstd::unordered_set 哈希集合效率较std::set高但数据无序示例 std:: unordered _setstd::mapKey, Value 二叉树映射需要key-value映射的场景示例 std::mapint, doublestd::unordered_mapKey, Value 哈希映射效率较std::map高但数据无序示例 std:: unordered _mapint, double
智能指针
std::shared_ptr 共享指针最接近于裸指针如int*指针内保存引用计数计数为0时删除数据std::unique_ptr 独享指针数据不可分离所有权指针销毁时数据同时销毁std::auto_ptr 不建议使用 介于std::share_ptr与std::unique_ptr之间所有权可转移且同一时刻只有一个指针有数据所有权。
C进阶
代码规范
Google代码规范 建议启用静态检查clang-tidy
设计模式
《Head First设计模式》 性能进阶
《Effective C》
备查工具书
《C Primer》
阅读开源项目
比如pytorch Github的开源项目stars多fork多代码质量通常不错。项目的主体代码组织是至少经过几个大版本迭代的阅读代码可有效提升对软件工程的理解。
敏捷开发模式
敏捷开发是一种以人为核心迭代循序渐进的开发方式。 在敏捷开发中软件项目的构建被切分成多个子项目各个子项目的成果都经过测试具备集成和可运行的特征。 加单的说敏捷开发并不是追求前期完美的设计、完美编码而是力求在很短的周期内开发出产品核心功能尽早发布出可用的版本。然后在后续的生产周期内按照新需求不断迭代升级完善产品。
敏捷开发模式的分类
敏捷开发的实现主要包括Scrum与XP极限编程ExtremeProgramming还有其他的一些方式。Scrum是迭代式增量软件开发过程。
XP极限编程更侧重于实践并力求把实践做到极限实 践可以是测试先行也可以是结对变成关键要看具体的应用场景。SCRUM则是一种开发 流程框架也可以说是一种套路。SCRUM框架中包含了三个角色三个工件四个仪式。其目的是为了有效完成每一次迭代周期的工作。SCRUM是一个重点。
回归本质
大胆尝试快速迭代