一、前言
当我们接触计算机的编程语言的时候,各位老铁先学习的一般是“Hello World!”,对于代码程序今天我们就来简单解析一下。
二、代码
下面就是一个简单的 C++ 的“Hello World!”。
#include <iostream>
using namespace std;
int main()
{
cout << "hello world!" << endl;
return 0;
}
三、解析
int main()
{
return 0;
}
- int 是整型的意思,占四个字节。
- main 是 main 函数也是主函数,整个工程文件中只能有一个 main 函数,main 函数也是程序的入口,程序是从 main 函数开始运行的。
- return 0 当程序跑到这里表示程序正常结束,返还 0 , 0 正好是个整数,与 int 正好相呼应。
cout << "hello world!" << endl;
- cout 可以理解为 c 语言中的 “ printf ”,输出函数。
- << 在 c 语言中表示左移左移操作符,在 c++ 中 << 在这里的作用就是把右边的信息以流的方式插入左边的cout中。
- endl 可以理解成 '\n' 换行。
#include <iostream>
- 包含头文件, iostream 里面封装了很多函数。
- iostream这个单词是由3个部分组成的,即i-o-stream,意为输入输出流。在iostream类库中包含许多用于输入输出的类。具体可参考:C++里面的iostream是什么
using namespace std;
namespace 是 C++ 里面的关键字,主要作用是创建一个命名空间域,目的是为了解决命名冲突的问题(自己创建的变量名字与库函数里面的名字,整个项目的变量名)。
#include <stdio.h>
#include <stdlib.h>
int rand = 1;
int main()
{
printf("%d", rand);
return 0;
}
上面是一段 C 语言代码(C++ 包含 C 语言),我们知道 rand 是函数,是封装在 stdlib 里面的,所以,当我们运行的时候就会报错。
int x = 10;
int main()
{
int x = 20;
printf("%d\n", x);
return 0;
}
我们知道的是,局部域的优先级大于全局域的优先级,所以此处匹配上的是 x = 20。
如果我们想让变量 x 匹配上 10 的话 我们可以在 x 面前加 ::。
:: 是 作用域限定符,当左边没有参数的时候,默认从全局域开始查找,当有参数的时候,从左边的参数地方去寻找。
int x = 10;
int main()
{
int x = 20;
printf("%d\n", x);
printf("%d", ::x);
return 0;
}
所以,当我们利用 namespace 、 :: 就可以避免名字冲突。
namespace hunter
{
int rand = 1;
}
int main()
{
printf("%d\n", hunter::rand);
return 0;
}
注:
- namespace 后面的名字可以自己随意起
namespace hunter
- namespace 可以加变量
namespace hunter
{
int rand = 1;
}
- namespace 可以加函数在里面
namespace hunter { int add(int x, int y) { return x + y; } } int main() { printf("%d\n", hunter::add(1,2)); return 0; }
-
namespace 可以加结构体
namespace hunter
{
struct yyds
{
int a;
char b;
};
}
int main()
{
struct hunter::yyds zz = { 1,'a' };
printf("%d %c\n",zz.a,zz.b);
return 0;
}
using 是将命名空间中某个成员引入,std 是个名称空间标示符,C++标准库中的函数或者对象都是在命名空间 std 中定义的,所以我们要使用标准函数库中的函数或对象都要使用std。
当使用 using namespace std ;表示展开(引入) std 的命名空间。
四、后语
希望本篇博客能对各位有所帮助,如果各位有任何疑问,欢迎各位留言,我们可以进行友好的探讨与交流。
欢乐的时间总是过得特别快。又到时间讲bye,我们下一篇再见!!!