程序结构介绍
本节阅读量:
C++中,最经常使用的是「语句」和「函数」。
写文章时,会将文章拆分为段落和句子。在代码组织上,「函数」类似于段落,「语句」相当于句子。
语句
「语句」是C++中最小的独立计算指令单元。大部分语句以「;」结尾。在C++中,一条语句编译后对应多条机器指令。
常用的语句类型如下:
声明语句
表达式语句
跳转语句
复合语句
选择语句
迭代语句
异常捕获块
下面是每种语句的简单例子,后面学习中会讲解语句用法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// 声明语句
int n = 1;
// 表达式语句
n = n + 1;
std::cout << "n = " << n << std::endl;
// 跳转语句
mylabel:
cout << n << ", ";
n--;
if (n>0) goto mylabel;
// 复合语句
{ 语句1; 语句2; 语句3; }
// 选择语句
if (x == 100) cout << "x is 100";
// 迭代语句
while (n>0) {
cout << n << ", ";
--n;
}
// 异常捕获块
try
{
throw 20;
}
catch (int e)
{
cout << "An exception occurred. Exception Nr. " << e << '\n';
}
函数及main函数
「函数」将一系列「语句」打包在一起,执行时按顺序执行其中的语句。
使用函数可以指代一系列语句,创建函数相当于创建新的指令。
main函数
每个C++程序都有一个main函数。程序启动时,顺序执行main函数中语句,直到程序结束。
编写函数是为了特定工作,例如如下「max」函数,求两数中最大数。
1
2
3
4
5
6
7
8
int max(int a, int b)
{
if (a > b)
{
return a;
}
return b;
}
使用函数有如下好处:
减少重复代码
提高程序可读性
降低程序的维护成本
注
在后续,使用「函数名」+「()」指代函数。例如,main()或doSomething(),而不是函数main或函数doSomething。
Hello World程序的拆解
有了语句和函数,拆解下「Hello World」程序。
1
2
3
4
5
6
7
#include
int main()
{
std::cout << "Hello World!" << std::endl;
return 0;
}
第一行是「预处理」指令,说明要使用「iostream」库。iostream是C++提供的用来读写命令行的标准库。
第五行的std::cout与std::endl就是iostream库中的功能。
如果没有这一行,编译器会报错,提示无法找到std::cout与std::endl的定义。
第二行是空行,不会被编译。程序中使用空行将不同部分隔开,以增加程序的可读性。
第三行告诉编译器,定义main函数。
第四行与第七行,标示main函数的开始与结束。
第五行是main函数的第一条语句。std::cout代表字符输出。
「«」表示将右边的内容发送给左边的对象,在这里表示输出到命令行中。
std::endl表示换行。
第六行是返回语句。程序执行完成后,该语句告诉操作系统程序已成功执行。
在大部分操作系统中,返回「0」代表程序执行成功。
语法错误
文本组成语句、函数及程序的规则,称作程序的「语法」。如同写作文时,每句话要以「。」来结尾。
只有符合C++语法的文本才能被C++编译器成功编译,否则编译器会报错。这类错误称为「语法错误」。
1
2
3
4
5
6
7
8
9
#include
int main()
{
int a;
int b;
std::cout << "Hello World!" << std::endl;
return 0
}
上面程序中,第8行结尾,少写了「;」。编译器给出如下提示:
语法错误
第9行的「}」之前少了「;」。语法错误是编程时常见的错误,编译器会明确告知错误位置,比较容易修改。
可以尝试删除程序中的任意部分,看看编译器分别给出什么样的报错。
0.5 第一个C++程序
上一节
1.1 注释
下一节