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

网站不收录专业团队的重要性

网站不收录,专业团队的重要性,电子商务网址,wordpress 微语功能#x1f31f;#x1f31f;作者主页#xff1a;ephemerals__ #x1f31f;#x1f31f;所属专栏#xff1a;C 目录 前言 一、手搓一个Hello World 二、命名空间namespace 1.命名空间的定义 2.命名空间的使用 3.命名空间补充知识 三、c中的输入和输出 四、缺省参… 作者主页ephemerals__ 所属专栏C 目录 前言 一、手搓一个Hello World 二、命名空间namespace 1.命名空间的定义 2.命名空间的使用 3.命名空间补充知识 三、c中的输入和输出 四、缺省参数 五、函数重载 六、内联函数 七、空指针 总结 前言 c是在c语言的基础上增加了面向对象编程、引用、函数重载、模板库STL等新特性使得c成为一门功能强大、灵活多变的语言。c在语法上兼容大部分c语言因而学习了c语言之后会对c学习有一定的帮助。相比javac语法的学习难度较高但是它难学易用也有利于我们理解底层是一门十分值得深入学习的语言。 接下来我们会重点介绍一些c的前置基础知识便于我们快速入门c语法。 一、手搓一个Hello World 那么就让我们从HelloWorld开始进入c的知识海洋。代码如下 //c语言版本 #include stdio.hint main() {printf(Hello World\n);return 0; } //c版本 #include iostream using namespace std;int main() {cout Hello World endl;return 0; } 由于c兼容c语言语法所以这两段代码在c编译器中都是可以完成运行的。 运行结果 可以看到c的基本语法和c语言还是有较大区别的。看不懂没关系我们将会逐一讲解这里的细节。 二、命名空间namespace 在c当中由于变量、函数、类等数量庞大难免会出现重名的情况它们都存在与全局域当中使用时就会出现冲突。而命名空间的出现就解决了这个问题。命名空间会对标识符的名称进行本地化本质上是使它们位于不同的作用域中避免了冲突的情况。 接下来我们尝试定义命名空间。 1.命名空间的定义 举个例子 namespace xxx {int x 5;int func(int a){return a * a;}struct A{int m;char n;}; } 1.定义命名空间使用的关键字是namespace后面加上该空间的名字在之后的 { } 中定义变量、函数或类等等。 2.命名空间只能定义在全局不能定义在函数体或者类中。 3.命名空间可以嵌套定义。 4.一个项目的多文件中定义的同名命名空间编译器会认为是同一个命名空间不会发生冲突。 2.命名空间的使用 接下来我们尝试访问命名空间中的成员。 namespace xxx {int x 5;int func(int a){return a * a;}struct A{int m;char n;}; }int main() {int x 10;printf(%d\n, x xxx::x);//访问命名空间的成员时在空间名之后加上两个冒号称之为域限定操作符printf(%d\n, xxx::func(x));return 0; } 运行结果 使用using关键字还可以将命名空间或者其成员展开。举例 namespace a {int m 5;int n 3; }namespace b {int p 10;int q 20; }using namespace a;//展开整个命名空间 using b::p;//展开命名空间的某成员int main() {printf(m%d,n%d\n, m, n);printf(p%d,q%d\n, p, b::q);return 0; }运行结果 可以看到展开命名空间或者成员之后在访问时就不需要再加上“::”了。这里需要注意在大型项目当中尽量不要展开命名空间很容易发生冲突的情况日常练习时为了方便可以使用。 我们之前的HelloWorld代码中使用了语句“using namespace std;”展开了命名空间std。 3.命名空间补充知识 1.c标准库都放在叫做“std”的命名空间当中。 2.namespace本质上就是定义了一个域叫做命名空间域。 3.c中有四种域函数局部域、全局域、命名空间域、类域不同的域当中的相同变量或者函数名形成域隔离不会冲突函数局部域和全局域会影响变量的声明周期命名空间域和类域不会影响变量声明周期。 三、c中的输入和输出 接下来我们按照刚才写的HelloWorld程序介绍c的输入输出。 #include iostream using namespace std;int main() {cout Hello World endl;return 0; } 1.可以看到我们引入了头文件iostream它是c的标准输入、输出流库定义了标准的输入输出对象。 2.cout,也就是std::cout是类ostream的对象它主要面向窄字符的标准输出流与c语言中printf函数作用相似与printf不同的是它可以自动识别要输出的变量的类型在使用时不需要特别指定输出类型。 3.endl是一个函数它用于输出一个换行符与传统的输出“\n”不同的是它可以在各种操作系统下正常使用而“\n”在不同的操作系统中含义可能不同。 4.我们看到“Hello World”字符串被两个“”符号围了起来这个符号叫做“流插入操作符”它可以理解为将该操作符之后的内容插入到cout中便于输出。当我们需要输出多个变量时可以将这些变量全部用“”分隔开。 对于输入操作c提供了std::cin它是类istream的对象主要面向窄字符的标准输入流。在使用它时我们需要加上“”(流提取操作符)可以理解为将输入的值提取到变量当中。 接下来我们写一段代码测试c中的输入输出 #include iostream using namespace std;int main() {int a 3;float b 5.5f;char c w;cout a b c endl;//不同的内容之间必须用分割int d 0;cin d;cout d;return 0; } 运行结果 四、缺省参数 缺省参数默认参数指的是在声明或者定义函数时可以给函数的参数设置一个默认值。当调用该函数时如果没有传对应参数则使用该默认值否则使用传入的参数。 1.缺省参数可分为全缺省参数和半缺省参数全缺省参数指的就是函数的参数全部设置了默认值半缺省参数指的就是部分参数设置了默认值。C标准规定半缺省参数默认值的设置必须按照函数参数从右往左进行不能跳跃。代码示例 #include iostream using namespace std;void func1(int a 3)//全缺省参数 {cout a endl; }void func2(int a, int b 0)//半缺省参数 {cout a b endl; }int main() {func1();func1(1);func2(1);func2(1, 2);return 0; } 运行结果 以下情况运行就会报错 #include iostream using namespace std;void func3(int a 10, int b)//缺省参数只能从右往左设置 {cout a b endl; }int main() {func3(3, 5);return 0; } 2.调用带缺省参数的函数时实参的传入必须从左到右进行不能跳跃。代码示例 #include iostream using namespace std;void func(int a, int b 3, int c 5) {cout a b c endl; }int main() {func(1, , 1);//报错return 0; } 3.当函数的声明和定义分离时缺省参数不能同时出现在声明和定义当中必须在声明中设置缺省参数。 五、函数重载 c中当同一作用域中出现同名函数时如果这些函数的形参不同参数个数不同或者参数类型有不同就会出现函数重载这些函数之间不会发生冲突情况。相比c语言c中函数重载的出现体现了多态性使得函数使用更加灵活。 举个例子 #include iostream using namespace std;int add(int a, int b)//两函数的参数类型不同出现重载 {return a b; }double add(double a, double b)//两函数的参数类型不同出现重载 {return a b; }int main() {cout add(1, 2) endl;cout add(3.3, 5.5) endl;return 0; } 运行结果 可以看到编译器会根据我们调用函数时传入的参数类型来决定调用哪一个重载函数。 下面来看一个特殊情况 void func() {cout 1 endl; }void func(int a 10) {cout 2 endl; }int main() {func();//报错 } 两个func函数构成函数重载但是当调用函数时不传参就会出现歧义编译器无法确定我们调用的是哪一个函数。 六、内联函数 相比c语言c引入了“内联函数”这个概念它对程序的效率提升有一定帮助。接下来我们深入了解以下内联函数。 1.用关键字“inline”修饰的函数叫做内联函数在程序编译的过程中编译器会在调用该函数的地方将此函数展开这样在程序运行时就不会创建函数栈帧提高了效率。 2.由于函数的体量有别所以并不是所有用“inline”修饰的函数都会在编译时展开使用“inline”修饰只是程序员的建议最终是否展开由编译器决定。一般代码量较短的函数会被展开而代码量较大或者递归函数就不会被展开展开之后反而会增加程序冗余。 3.当一个函数被我们使用“inline”修饰时如果该函数的声明和定义是分离的那么将会导致编译错误。所以使用“inline”修饰函数时要同时进行声明和定义。 七、空指针 在c语言中空指针用“NULL”来表示它是一个宏常量是被强制类型转换为void型指针的0而c中的“NULL”直接替换为0。由于c中存在函数重载当我们将NULL作为参数传递时可能会出现以下情况 #include iostream using namespace std;void func(int* ptr) {cout 1 endl; }void func(int x) {cout 2 endl; }int main() {func(NULL);return 0; }运行结果 我们传入空指针本意是要调用第一个函数但是结果却调用了第二个函数。如果我们传入被强制转换为void*的0呢 可以看到程序出现了报错我们仍然无法调用第一个函数。针对这种问题c定义了一个关键字来表示空指针nullptr。它是一种特殊类型的字面量可以转换为任意类型的指针。由于它只能被转换为指针类型所以就避免了以上问题。我们来传入nullptr试试 #include iostream using namespace std;void func(int* ptr) {cout 1 endl; }void func(int x) {cout 2 endl; }int main() {func(nullptr);return 0; } 运行结果 可以看到程序成功地调用了第一个函数。 总结 今天我们学习了关于c的一些前置知识这些新的概念和定义有效地弥补了c语言的一些不足。之后我们的c程序都会以这些知识为基础。如果你觉得博主讲的还不错就请留下一个小小的赞在走哦感谢大家的支持❤❤❤
http://www.dnsts.com.cn/news/44163.html

相关文章:

  • 做外贸网站需要缴什么税html注册登录模板
  • 湛江制作网站多少钱公司门户网站及oa系统建设的请示
  • 教学网站开发背景西安官网seo诊断
  • 广州企业所得税河北seo网站优化公司
  • 建个网站多少钱app贵州省住房和城乡建设厅网站官网
  • 网站建设服务标准深圳罗湖网站制作
  • 做企业福利网站起名怎么做公司网站的二维码
  • 网站开发各小组互评表html5 开发的网站
  • 做设计需要知道的几个网站吗注册一个互联网公司需要多少钱
  • wordpress建站 知乎北京做网站建设的公司有哪些
  • 雅奇小蘑菇做网站好不好用怎么在自己做网站
  • 网站设计风格类型wordpress函数文件夹
  • 企业网站群建设模式wordpress 产品分类侧边栏
  • 北京网站开开发公司大旺建设局网站
  • 淄博的大型网站建设json做网站的数据库
  • 网站开发师贴吧厦门集团网站建设
  • 起个娱乐网站名字科技网站新版网站上线
  • 私人做网站的流程如何做响应式网站设计
  • 建设银行的网站是多少网站设计理念介绍
  • 大连市住房与城乡建设部网站中国最大的编程公司
  • 企业模板建站公司公司网站建设佛山哪家专业
  • 企业做网站的概要wordpress菜单子菜单
  • 福永网站推广河北建筑工程学院招生网官网
  • 佛山网站优化什么价格高德地图怎么导航环线
  • 国外电子商务网站网站网站制作价格建站网站
  • 网站怎么做百度认证吗wordpress怎么填写横幅图片
  • 上海做网站哪家公司海南房产网站开发
  • 斗牛网站开发专业排名优化工具
  • 做网站好看的背景图片wordpress文章详情页
  • 厦门做网站公司哪家好wordpress所有分类