有关网站开发的创意,wordpress缩略图地址,网站文章更新怎么通知搜索引擎,昌平网站建设浩森宇特Hello#xff0c;今天我们分享一些关于C入门的知识#xff0c;看完至少让你为后面的类和对象有一定的基础#xff0c;所以在讲类和对象的时候#xff0c;我们需要来了解一些关于C入门的知识。
什么是C C语言是结构化和模块化的语言#xff0c;适合处理较小规模的程序。对… Hello今天我们分享一些关于C入门的知识看完至少让你为后面的类和对象有一定的基础所以在讲类和对象的时候我们需要来了解一些关于C入门的知识。
什么是C C语言是结构化和模块化的语言适合处理较小规模的程序。对于复杂的问题规模较大的 程序需要高度的抽象和建模时C语言则不合适。为了解决软件危机 20世纪80年代 计算机 界提出了OOP(object oriented programming面向对象)思想支持面向对象的程序设计语言 应运而生。 1982年Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念发明了一 种新的程序语言。为了表达该语言与C语言的渊源关系命名为C。因此C是基于C语言而 产生的它既可以进行C语言的过程化程序设计又可以进行以抽象数据类型为特点的基于对象的 程序设计还可以进行面向对象的程序设计。 我们可以看到这张图的人就是我们的祖师爷本贾尼·斯特劳斯特卢普祖师爷觉得C语言在某些方面还是存在缺陷所以在C语言的基础上不断的往上面加内容就有了现在的C看到祖师爷先拜两下有助于我们后面的学习。
C的发展史 1979年贝尔实验室的本贾尼等人试图分析unix内核的时候试图将内核模块化于是在C语言的基础上进行扩展增加了类的机制完成了一个可以运行的预处理程序称之为C with classes。
语言的发展就像是练功打怪升级一样也是逐步递进由浅入深的过程。我们先来看下C的历史版本。我们来看下面的这张图来看看C语言的发展。 C还在不断的向后发展。但是现在公司主流使用还是C98和C11所有大家不用追求最新重点将C98和C11掌握好等工作后随着对C理解不断加深有时间可以去琢磨下更新的特性。 版本更新没有JAVA快但是我们C出现的早JAVA有些内容也是模仿的C
C的重要性 3.1 语言的使用广泛度 下图数据来自TIOBE编程语言社区2021年12月最新的排行榜在30多年的发展中C/C几乎一致稳居前5。 TIOBE 编程语言社区排行榜是编程语言流行趋势的一个指标每月更新这份排行榜排名基于互 联网上有经验的程序员、 课程和第三方厂商的数量。排名使用著名的搜索引擎诸如 Google、 MSN、Yahoo!、Wikipedia、YouTube 以及 Baidu 等进行计算。 注意排名不能说明那个语言好那个不好每门编程语言都有适应自己的应用场景。
3.2 在工作领域
操作系统以及大型系统软件开发 所有操作系统几乎都是C/C写的许多大型软件背后几乎都是C写的比如 Photoshop、Office、JVM(Java虚拟机)等究其原因还是性能高可以直接操控硬件。服务器端开发 后台开发主要侧重于业务逻辑的处理即对于前端请求后端给出对应的响应现在主流采 用java但内卷化比较严重大厂可能会有C后台开发主要做一些基础组件中间件、 缓存、分布式存储等。服务器端开发比后台开发跟广泛包含后台开发一般对实时性要求 比较高的比如游戏服务器、流媒体服务器、网络通讯等都采用C开发的。游戏开发 PC平台几乎所有的游戏都是C写的比如魔兽世界、传奇、CS、跑跑卡丁车等市面上 相当多的游戏引擎都是基于C开发的比如Cocos2d、虚幻4、DirectX等。三维游戏领 域计算量非常庞大底层的数学全都是矩阵变换想要画面精美、内容丰富、游戏实时性搞这些高难度需求无疑只能选C语言。比较知名厂商腾讯、网易、完美世界、巨人网络等。嵌入式和物联网领域 嵌入式就是把具有计算能力的主控板嵌入到机器装置或者电子装置的内部能够控制这些 装置。比如智能手环、摄像头、扫地机器人、智能音响等。 谈到嵌入式开发大家最能想到的就是单片机开发(即在8位、16位或者32位单片机产品或者 裸机上进行的开发)嵌入式开发除了单片机开发以外还包含在soc片上、系统层面、驱动 层面以及应用、中间件层面的开发。 常见的岗位有嵌入式开发工程师、驱动开发工程师、系统开发工程师、Linux开发工程 师、固件开发工程师等。 知名的一些厂商比如以华为、vivo、oppo、小米为代表的手机厂以紫光展锐、乐鑫为 代表的芯片厂以大疆、海康威视、大华、CVTE等具有自己终端业务厂商以及海尔、海 信、格力等传统家电行业。 随着5G的普及物联网(即万物互联)也成为了一种新兴势力比如阿里lot、腾讯lot、京 东、百度、美团等都有硬件相关的事业部。数字图像处理 数字图像处理中涉及到大量数学矩阵方面的运算对CPU算力要求比较高主要的图像处理 算法库和开源库等都是C/C写的比如OpenCV、OpenGL等大名鼎鼎的Photoshop 就是C写的。人工智能 一提到人工智能大家首先想到的就是python认为学习人工智能就要学习python这个 是误区python中库比较丰富使用python可以快速搭建神经网络、填入参数导入数据就 可以开始训练模型了。但人工智能背后深度学习算法等核心还是用C写的。分布式应用 近年来移动互联网的兴起各应用数据量业务量不断攀升后端架构要不断提高性能和并发 能力才能应对大信息时代的来临。在分布式领域好些分布式框架、文件系统、中间组件等 都是C开发的。对分布式计算影响极大的Hadoop生态的几个重量级组件HDFS、 zookeeper、HBase等也都是基于Google用C实现的GFS、Chubby、BigTable。包括分布式计算框架MapReduce也是Google先用C实现了一套之后才有开源的java版本。
之所以小编选择的是C是因为我想从事嵌入式的工作每个人心目中肯定都有自己所想去的地方小编也有所以大家一起努力相信时间会给出答案让我们一起进步吧 这就是一个大致的学习方向。那我们和C语言一样启动我们的第一个编程Hello C吧
#includeiostreamusing namespace std;
int main()
{cout Hello C endl;return 0;
} 这里我们C第一个程序就开始跑起来了我们就来讲讲一些代码中的东西吧
首先就是我们的头文件变成来iostream这里我觉得不用过多的讲解接下来就是std是什么意思它就是一个流我们要从里面获取东西cout就相当于我们之前的printf还有就是endl相当于换行的作用我们其实如果第一句话不是写成using name std的话我们需要写成下面的内容。
#includeiostreamint main()
{std::cout Hello C std:: endl;return 0;
}
是C的域操作符相当于我们要从这里面取出东西就得加上这个东西 之前其实讲过stdin和stdout不知道大家有没有记得是那篇文章。
C关键字(C98)
C总计63个关键字C语言32个关键字 这些内容我们现在不需要记住后面遇到一个我们就讲一个接下来我们来讲讲命名空间
命名空间 我们想象这样的一个场景就是两个人在做一个项目但是命名的时候他们心意相同命名同一个变量后来他们合到一起的时候编译错误这个时候该怎么办呢是他们打一架然后输的那个人把变量名改掉吗。这个时候我们的祖师爷觉得这样就会很麻烦于是就有了我们现在认识的命名空间。
在C/C中变量、函数和后面要学到的类都是大量存在的这些变量、函数和类的名称将都存 在于全局作用域中可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化 以避免命名冲突或名字污染namespace关键字的出现就是针对这种问题的. #include stdio.h
#include stdlib.h
int rand 10;
// C语言没办法解决类似这样的命名冲突问题所以C提出了namespace来解决
int main()
{printf(%d\n, rand);return 0;
}
// 编译后后报错error C2365: “rand”: 重定义以前的定义是“函数”上面的代码我们运行起来就是会出现错误但是我们如果不包含头文件的时候就不会报错像这样 #include stdio.hint rand 10;
// C语言没办法解决类似这样的命名冲突问题所以C提出了namespace来解决
int main()
{printf(%d\n, rand);return 0;
}
// 编译后后报错error C2365: “rand”: 重定义以前的定义是“函数”我们取消了头文件stdlib所以就不会报错。。 我们也可以从这个函数引出其他的问题我们来看下面的代码。 List .h
struct Node
{struct Node* node;int val;
};Queue.h
struct Node
{struct Node* node;int val;
};struct Queue
{struct Node* head;struct Node* tail;
};
test.cpp
#includelist.h
#includeQueue.hint main()
{struct Node node;return 0;
}这里我们进行编译就会出现上面的问题所以这是什么原因呢原因很简单首先就是我们包含两个头文件这两个头文件里都有Node这个变量那我们这个时候难道又让他们打一架吗我们的祖师爷可不让我们这样做所以就有命名空间这样就可以不用打架了我们来看一下该怎么用呢 这样我们的问题就轻松的解决了。
今天的入门知识就分享到这里后面再继续分享了