当前位置: 首页 > news >正文

河北省住房和建设厅网站做自媒体可以参考的外国网站

河北省住房和建设厅网站,做自媒体可以参考的外国网站,网站和微信订阅号优势,网址大全100个文章目录 前言1. 初识C2. C的发展阶段2. 命名空间2.1 为什么要有命名空间#xff1f;2.2 命名空间的语法2.3 命名空间的原理2.4 使用命名空间的三种方式2.4.1 加命名空间名称及作用域限定符( :: )2.4.2 使用using关键字将命名空间中某个成员 引入2.4.3 使用using namespace 命… 文章目录 前言1. 初识C2. C的发展阶段2. 命名空间2.1 为什么要有命名空间2.2 命名空间的语法2.3 命名空间的原理2.4 使用命名空间的三种方式2.4.1 加命名空间名称及作用域限定符( :: )2.4.2 使用using关键字将命名空间中某个成员 引入2.4.3 使用using namespace 命名空间名 引入 3. 简单了解C的输入和输出 前言 本文是正式踏上C学习之旅的第一篇文章也是我分享C笔记的第一篇文章。在这篇文章中我会给大家介绍C的发展历史让大家更好从C语言过渡到C也会让大家认识到为什么C能够兼容C语言的语法。 光是讲解C的历史那可就太无趣了所以在本文中我还会给大家加一点料 —— “命名空间”以及如何高效的使用C中命名空间。 还会教大家如何用C的方式输出Hello World。 1. 初识C C语言是结构化和模块化的语言适合处理较小规模的程序。对于复杂的问题规模较大的程序需要高度的抽象和建模时C语言则不合适。为了解决软件危机 20世纪80年代 计算机界提出了OOP(objectoriented programming面向对象)思想支持面向对象的程序设计语言应运而生。所以我们经常说到C是面向对象的语言而C语言是面向过程的语言。 1982年Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念发明了一种新的程序语言。为了表达该语言与C语言的渊源关系命名为C。因此C是基于C语言而产生的它既可以进行C语言的过程化程序设计又可以进行以抽象数据类型为特点的基于对象的程序设计还可以进行面向对象的程序设计。 请大家记住C诞生的时间(1982年)以及发明C的大佬 —— “本贾尼” 2. C的发展阶段 作为了解就好但是也要知道我们现在是在用C版本是多少。 阶段内容C with classes类及派生类、公有和私有成员、类的构造和析构、友元、内联函数、赋值运算符重载等C1.0添加虚函数概念函数和运算符重载引用、常量等C2.0更加完善支持面向对象新增保护成员、多重继承、对象的初始化、抽象类、静态成员以及const成员函数C3.0进一步完善引入模板解决多重继承产生的二义性问题和相应构造和析构的处理C98C标准第一个版本绝大多数编译器都支持得到了国际标准化组织(ISO)和美国标准化协会认可以模板方式重写C标准库引入了STL(标准模板库)C03C标准第二个版本语言特性无大改变主要修订错误、减少多异性C05C标准委员会发布了一份计数报告(Technical ReportTR1)正式更名C0x即计划在本世纪第一个10年的某个时间发布C11增加了许多特性使得C更像一种新语言比如正则表达式、基于范围for循环、auto关键字、新容器、列表初始化、标准线程库等C14对C11的扩展主要是修复C11中漏洞以及改进比如泛型的lambda表达式auto的返回值类型推导二进制字面常量等C17在C11上做了一些小幅改进增加了19个新特性比如static_assert()的文本信息可选Fold表达式用于可变的模板if和switch语句中的初始化器等C20自C11以来最大的发行版引入了许多新的特性比如模块(Modules)、协程(Coroutines)、范围(Ranges)、概念(Constraints)等重大特性还有对已有特性的更新比如Lambda支持模板、范围for支持初始化等C23明确的对象参数Deducing this、if consteval、多维下标运算符、内建衰减复制支持、标记不可达代码std::unreachable、平台无关的假设[[assume]]、命名通用字符转义、扩展基于范围的 for 循环中临时变量的生命周期、constexpr 增强、简化的隐式移动、静态运算符 static operator[] 以及类模板参数推导 C还在不断地向后发展。但是现在公司主流的是用的还是C98和C11等大家以后工作时可以慢慢钻研C的新特性现在这需要我们熟练的掌握C98和C11这两个标准即可。 我们现在学习阶段大都接触到的也就是这两种标准(C11和C98)。 2. 命名空间 2.1 为什么要有命名空间 请大家看一下下面的代码 #includestdio.hint rand 0; int main() {int rand 10;printf(%d\n,rand);return 0; }上面的代码会不会报错相信掌握C语言语法的读者就会说上面的代码是可以正常编译通过的。没错上面的代码的确是没有任何问题的。 那如果我将上述的代码做了一点改变代码还能正常编译过去吗 #includestdio.h #includestdlib.h int rand 0; int main() {int rand 10;printf(%d\n,rand);return 0; }如果你们自己去测试的话显然会出现编译错误。 这是什么原因呢 编译器说rand重定义而且错误是我们在引用stdlib.h的头文件之后才出现的。到这里我们就意识到了有个rand的变量名或者时函数名而我们知道一个.c/.cpp的源文件在编译阶段的预处理阶段会把头文件的内容给展开所以就会出现rand重定义了。 这个问题在C语言上只能是要你改变这个变量名了。C就能够解决这个问题即使你不更改变量名编译器也不会报错这个C的利器就是命名空间 为了让大家对命名空间的这个新事物引起更高的重视我来给大家举个生活中实际例子 比如现在有一个互联网公司这个公司最近准备研发一个项目老板就把项目就分配给了一个小组而小组里面有两人小明和小刚负责分别负责这个项目的两个模块。他们两个写啊写啊终于有一天他们俩将各自写的项目都提交了上去编译一下却出现错误经过检查发现他们两个项目的变量名有很多是重叠了这个会出现命名冲突的问题。如果他们是用C语言来写的话那必定有一方得是改变变量命名那两个人肯定都不愿意改的。如果用C的命名空间的话就可以完美避开这个问题了。 好了在讲完命名空间的重要性之后我们就得认识一下命名空间的用法以及底层的原理 2.2 命名空间的语法 namespace 命名空间名 {内容 }下面我来一遍做展示一遍拓展 这个是我们进行正常的命名空间定义 namespace test {int rand 10;int Add(int x, int y){return xy;}struct Node{int data;struct Node* next;} }我们不仅可以在命名空间定义并初始化变量还可以进行对函数的定义结构体的定义等。 命名空间可以嵌套 namespace N1 {int a;int b;int Add(int left, int right){return left right;}namespace N2{int c;int d;int Sub(int left, int right){return left - right;}} }可以看到我们中命名空间去嵌套另一个命名空间。 同一个工程中允许不同的文件出现名称相同的命名空间但是最后编译器会将不同文件相同名称的命名空间给合并到一起 //这个是test.h文件里面的命名空间 namespace N1 {int Mul(int left, int right){return left * right;} }//这个是test.cpp文件里面的命名空间 namespace N1 {int a;int b;int Add(int left, int right){return left right;}namespace N2{int c;int d;int Sub(int left, int right){return left - right;}} }经过编译器的编译之后最后的合并的结果就是 namespace N1 {int Mul(int left, int right){return left * right;}int a;int b;int Add(int left, int right){return left right;}namespace N2{int c;int d;int Sub(int left, int right){return left - right;}} }2.3 命名空间的原理 提到命名空间我们就不得不提另一个概念域。 想必大家或多或少都会在C语言中听过作用域(全局域、局部域)这个名词。这个就是域中的一种在C中还有命名空间域、类域等等。而我们现在说讲的命名空间它的实质就是一种命名空间域。 那可能有的读者会问域是个什么东西 那我们可以先从我们熟悉的入手全局域和局部域。我们都知道在给全局变量和局部变量去相同的变量名时程序是不会报错的这个就是域的作用。我们可以把域想象成一面墙被这面的墙隔开的事物互不干扰你干你的事我刚我的事。 讲到这里我相信你已经对命名空间域已经有感觉了。我们也可以把命名空间域看作是一面墙将局部域与全局域给隔开了。在这个域里面有自己独自维护的变量。 所以我们可以总结一下命名空间是解决全局变量与头文件的命名冲突问题或者是解决同一个工程项目中不同模块之间的命名冲突问题。 2.4 使用命名空间的三种方式 我们讲解了命名空间的原理那命名空间里面的成员我们该怎么引用呢比如 namespace test {// 命名空间中可以定义变量/函数/类型int a 0;int b 1;int Add(int left, int right){return left right;}struct Node{struct Node* next;int val;}; } int main() {// 编译报错error C2065: “a”: 未声明的标识符printf(%d\n, a);return 0; }2.4.1 加命名空间名称及作用域限定符( :: ) int main() {printf(%d\n, test::a);return 0; }2.4.2 使用using关键字将命名空间中某个成员 引入 using test::b; int main() {printf(%d\n, test::a);printf(%d\n, b);return 0; }这种方式建议使用 2.4.3 使用using namespace 命名空间名 引入 using namespace test; int main() {printf(%d\n, test::a);printf(%d\n, b);Add(10,20);return 0; }注意使用这个方法时是有风险的(这个命名空间里面有着和全局变量一样的变量名)所以我们在平时进行练习或比赛的时候使用即可。 3. 简单了解C的输入和输出 我们再学一门新的语言时往往会都会干一件事就是在屏幕上输出Hello World。 所以这里我们就简单认识一下C的输入和输出。 #includeiostream // std是C标准库的命名空间名C将标准库的定义实现都放到这个命名空间中 using namespace std; int main() {coutHello world!!!endl;return 0; }说明 1. 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时必须包含 iostream 头文件以及按命名空间使用方法使用std。 2. cout和cin是全局的流对象endl是特殊的C符号表示换行输出他们都包含在包含 iostream 头文件中。 3. 是流插入运算符是流提取运算符。 4. 使用C输入输出更方便不需要像printf/scanf输入输出时那样需要手动控制格式。 C的输入输出可以自动识别变量类型。 5. 实际上cout和cin分别是ostream和istream类型的对象和也涉及运算符重载等知识这些知识我们我们后续才会学习所以我们这里只是简单学习他们的使用。 注意早期标准库将所有功能在全局域中实现声明在.h后缀的头文件中使用时只需包含对应 头文件即可后来将其实现在std命名空间下为了和C头文件区分也为了正确使用命名空间 规定C头文件不带.h旧编译器(vc 6.0)中还支持iostream.h格式后续编译器已不支持因 此推荐使用std的方式。 #include iostream using namespace std; int main() {int a 10;double b 3.1415;char c l;// 可以自动识别变量的类型cina;cinbc;coutaendl;coutb cendl;return 0; }最后在声明一点,std命名空间的使用惯例 std是C标准库的命名空间如何展开std使用更合理呢 在日常练习中建议直接using namespace std即可这样就很方便。using namespace std展开标准库就全部暴露出来了如果我们定义跟库重名的类型/对象/函数就存在冲突问题。该问题在日常练习中很少出现但是项目开发中代码较多、规模大就很容易出现。所以建议在项目开发中使用像std::cout这样使用时指定命名空间 using std::cout展开常用的库对象/类型等方式。 到这里本文就结束了如果觉得文章写得还不错的话麻烦给偶点个赞吧
http://www.w-s-a.com/news/481490/

相关文章:

  • 滁州新手跨境电商建站哪家好网站推广运作怎么做
  • 烟台有没有做网站大连建设工程信息网专家库
  • 网站建设明确细节商贸有限公司的经营范围
  • 南宁微网站开发做的好的有哪些网站
  • 好的素材下载网站读书网网站建设策划书
  • 东莞南城网站建设wordpress用户投稿插件
  • 开个网站做代理赚钱吗沽源网站建设
  • 做卖车网站需要什么手续wordpress 主题 demo
  • 上海外贸网站开发公司建设内容
  • 网站制作品牌公司网站的字体颜色
  • 外贸wordpress模板常德seo快速排名
  • 网站后台认证码专门做网页的网站
  • 宁波企业品牌网站建设物流公司招聘
  • 北京机建网站做网站用angular
  • 攀枝花市网站建设outlook企业邮箱注册申请
  • 企业网站建设报价单免费劳务网站建设
  • 天津平台网站建设方案国际新闻最新消息今天乌克兰与俄罗斯
  • 食用油 网站 模板网页游戏网站在线玩
  • 做网站用的书新能源东莞网站建设技术支持
  • 漯河网站超市建设软件开发的五个阶段
  • 制作深圳网站建设阿里OSS做网站图库费用
  • 网页设计与网站建设 入门必练宜都网站seo
  • 网站设计沟通阆中网站网站建设
  • 缩短网址做钓鱼网站如何确保网站安全
  • 网店网站开发怎样用ps做企业网站
  • 南京门户网站建设做网站一般注册哪几类商标
  • 企业咨询管理服务wordpress seo tdk
  • 做网站前期创建文件夹flash 开发的网站
  • 天津网站制作培训搭建网站的工具
  • 江西网站建设价格低网上卖产品怎么推广