代码框架
在你学会一个语句之后,并不能直接把他放进IDE(集成开发环境)中尝试,否则就会有如下报错:
cout << "a" << endl;
注:cout是C++的输出语句
为什么呢?
头文件
因为cout(这里举例使用的cout,实际上别的语句也会有这个问题)是被定义在iostream的一个实例。所以当你没有声明iostream的内容时,编译器就蒙了:“a cout是啥东西,我不到啊”。但是当你成功的把iostream定义后,就可以成功运行了……吗?
插一嘴:编译器编译时,会将iostream这一类的头文件展开,具体我们后面再讲
#include <iostream>
cout << "a" << endl;
出现了与上次同样的报错。
为什么呢?
命名空间
因为C++把所有标准库中的东西全部装在了std(标准的英文缩写)这个命名空间中。这里提到了C++的新概念——命名空间。
关于命名空间,不妨先看看下面这张图
假设你现在有两个购物包,一个叫A,一个叫B,两个包里都有且只有香皂、水瓶、电池,该如何分辨他们呢?
在之前的C语言里,我们只能给这相同的东西赋予不同的名字,比如包A里的香皂就叫香皂,包B里的香皂叫香皂2等。
但是在C++中,引入了命名空间这个概念。命名空间就相当于一个袋子,把东西套起来,分辨时只要说哪个包里的什么东西就好了,比如:包A里的香皂,包B里的水瓶等。代码更加易懂,不容易出错。
当然在代码里你要用命名空间的话,要这么写:
<命名空间名>::<成员名>
比如cout:
std::cout
但是那些原本标准库的归宿呢?就在std里。
然而在初学者写代码时可能会忘记使用命名空间,所以这个语句诞生了——
using namespace std;
直接翻译,意思是“使用命名空间std”
那么他的意思就是在全局使用命名空间std。回到上面那个例子,如果你在代码前面写了using namespace A
的话,调用A的时候可以直接写香皂、水瓶、电池,省略前面的A::
,但是调用B里的东西是还是需要写完整的代码。
那为什么我们要写这个使用std命名空间呢?因为新手的大部分要用的东西都是在标准库里的,在std命名空间里,像cin,cout等等。
但当你加上了命名空间后:
#include <iostream>
using namespace std;
cout << "a" << endl;
还是会有像之前一样的报错。
为什么呢?
函数
我们知道,C++的代码是从上往下,依次执行的。这里我们又要提到一个概念——函数。
编程的函数并不是数学上的函数,而是一个“饼干工厂”,你给它材料,他就能做出饼干。函数正是如此。函数实际写下来是这样的。
int function(int a, int b) {
return a + b;
}
我们今天要讲的主题并不是自定义函数(上面这种),而是主函数。
主函数其实就是告诉编译器:“从这开始噢,别跑偏了”,相当于程序的入口。有了这个入口,我们就能开心的写代码了。
主函数这么写
int main() {
//代码
}
最后,我们的程序变成了这样:
#include <iostream>
using namespace std;
int main() {
cout << "a" << endl;
}
好习惯:函数、命名空间中间空一行,代码块(用“{}”裹起来的)要缩进
最后,加上一个return 0
至于这东西的作用,其实没什么作用可以让程序返回0,好让主函数结束运行。
那有的人就要说了:“啊主函数运行完了不就结束了吗?”
现在的顺序结构是这样的,但是在学到分支的时候,你会恍然大悟的。
输出语句
在C++里进行标准输出时,我们通常使用cout语句。例如最简单的“Hello,world!”
cout << "Hello,world";
不难发现,cout后面一般都会有两个小于号,这是流运算符。cout语句可以有任意个流运算符。
与python不同,cout语句后不会自动加上换行符。也就是说,上面的代码可以写成这样。
cout << "Hello" << ",world";
也可以写成这样
cout << "Hello";
cout << ",world";
其实,后面的内容不仅可以是字符串,还可以是数字、变量、数组、函数名。
例:输出“Hello,world!”,但是是变量。
string s = "Hello,world!"
cout << s << endl;
例2:输出“Hello,world!”,但是是字符数组。
字符数组:C语言里的字符串,在C++中则是string,使用字符数组时多定义至少1个字符
char s[12] = {"Hello,world!"};
cout << s << endl;
例3:输出3
cout << 3 << endl;
例4:输出3,但是是变量
int x = 3;
cout << x << endl;
在最后加换行符(endl, end line)看题目要求。
cout的掌握要以练习为主。
总结
我们一个程序的框架如下:
#include <iostream>
using namespace std;
int main() {
return 0;
}
这个框架一定要熟练!这是以后我们所有的程序的基础。
我们下期再见。