目录
1.用C++的方式写一个Hello World
2.命名空间
2.1什么是命名空间?
2.2使用命名空间
3.C++的输入输出
前言:C++初阶系列,每一期博主都会使用简单朴素的语言将对应的知识分享给大家,争取让所有人都可以听懂,C++初阶系列会持续更新,上学期间将不定时更新,但总会更的
1.用C++的方式写一个Hello World
#include<iostream>//1
using namespace std;//2
int main()
{
cout <<"Hello World"<<endl;//3
}
我们逐步逐步的分析这几串代码,#include<iostream>引用对应的流头文件,使得我们的一些输入输出命令可以使用。
而下面这段using namespace std;是什么意思呢?相信不少初学者在老师上课的时候总会有这种疑惑,但老师总会来一句,你们就先用着到时再说这个,这就令人有点膈应。接下来就由博主来给大家讲解一下对应的知识:命名空间
2.命名空间
2.1什么是命名空间?
在我们学习语言的过程中,你们是否想过,未来有一天,我参加了一个项目,项目里有算上你有3个程序员,你们要分模块化进行代码的编写从而实现一款2D像素小游戏,小A他负责装备特性和炫酷技能的编写,小B负责人物之间的交互,而你负责战斗模块的编写。小A在他的代码里写了一个变量叫fight,寓意着战斗力,来直观地让玩家明白装备的差别。而你在你的模块中也写了一个fight,代表着战斗进行的回合数。那么,一旦项目合并在一起,两个fight就会出现冲突,编译器不知道该选择哪个fight进行使用,这时候怎么办呢?在c中这种问题是没办法很好地解决的,只能是你们中的一人选择退让并将对应的变量名进行修改,在C++中就可以通过命名空间的方式来很好地杜绝这一行为。
使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。
2.2使用命名空间
众所周知,C++是基于C进行升级的编程语言,因此在C上的各种代码依然是可以在C++上跑的。如图所示,我们像写C的时候包两个头文件,再定义一个全局变量rand,之后使用printf函数队rand的值进行打印,但在 C上能跑的代码现在就出现了问题,"rand重定义,以前的定义是函数",也就是说,我们的命名与前人在头文件中写的函数名字出现了冲突。这个时候我们就可以使用命名空间来解决问题。
#include<stdio.h>
#include<stdlib.h>
namespace abc
//创建一个名字叫abc的空间
{
int rand = 10;
}
int main()
{
printf("%d ", rand);
}
哎,怎么回事啊,怎么是这个奇奇怪怪的东西呀,我不是要打印出10吗?别慌,首先呢这一大串是对应函数的地址,而之所以是对应函数的地址是因为,我们创建命名空间就像是在自己家外建立了一块围墙 有人想进来找东西,那肯定得要有钥匙,而没钥匙自然只能去墙外面找。而编译器在墙外找到了一个叫rand的函数,自然就把它用起来了。
那么我们要怎么才能进入到对应命名空间中取出对应的变量呢?使用域名限定符::即可
空间名+域名限定符+变量名 就可以访问到对应命名空间对应的变量
这个时候又有小机灵鬼想到了一个超级代码,我在自己的命名空间中再定义一个同名的rand,别问我为什么,我就是想要这么多个rand,好好好,写的好啊。那么这个时候我们要回避命名冲突的问题,我们就可以使用嵌套命名空间的方式,是的,你没有听错,命名空间是可以嵌套的。
访问的方式也大同小异,可理解为先访问abc空间,再访问a(b)空间,再在里面去查找对应的值
超级小机灵鬼还不满意,又问"那么命名空间的名字相同会发什么什么呢?"答案是会合并在一起,这两块空间将会被编译器视为同一块空间,你在里面存放变量,会被存放到同一块空间中。
那么回到最开始,我们的那个using namespace std 是什么意思呢,std是C++官方库定义的命名空间。using namespace std 的含义就是展开std空间的内容,令std库中的内容展开,这样就不需要使用域作用限定符来进入空间,因为空间中的内容已经被展开了。
3.C++的输入输出
using namespace std讲完以后我们来讲一下C++的输入输出,cout 是console out 的缩写,意思是朝着控制台输出,而<<是流插入运算符,你可以把它看作将数据从右边往左边流入,然后再在控制台输出,那么cout<<"Hello World"就可以看作将Hello World 这个字符串流入到控制台中并打印,而endl 是end line 的缩写,意思是结束这一行,也就是换行。
C++的输出还有一点非常强大,那就是它可以自动识别数据类型,以前我们使用C的时候还得%d %f %c,现在直接就出来了。
输入的话用cin,console in 翻译过来就是控制台里面,引申一下就是从控制台中取数据,所以cin>>变量名 便是从控制台中取数据并使对应变量修改成控制台上的数据。
好了,今天的分享到这里就结束了,感谢各位友友的来访和阅读,祝各位友友们前程似锦O(∩_∩)O