C++语言大笔记(二):详述程序组成结构

一、程序的结构概览

通常,当我们用函数处理一个问题时,会先将问题组织为一个个主要任务,然后设计一个个与任务对应的独立的函数来处理这些任务。

一个完整的源程序通常包含以下元素:
1、由//标识的注释
2、预处理器编译指令
3、函数头
4、编译指令
5、函数体
6、结束函数的return返回语句

例如:

#include <iostream>//预处理器编译指令
int main ()//函数头
{ //{}内为函数体
using namespace std;//编译指令
cout << "Hello world\n";//基本输出语句
return 0; //函数的返回语句
}

下面,我们将对这些程序的基本组成结构进行一一详述。

二、main函数

我们刚才提到,C++在处理任务时会将任务分割成一个个小任务,而我们会通过建立一个个函数来分别解决那一个个小任务。

但是,在这个过程中,我们还需要一个主函数,来确定完成这个总任务的主线路径,并把其他一个个小任务用主函数串联起来,这个主函数,就是main函数。

比如说,我们需要把一头大象放进冰箱,那么我们的main函数中,就包括了打开冰箱,把大象放进冰箱,以及关上冰箱门。但是,该怎么把大象放进冰箱里呢?这就需要我们再重新另建立一个函数,这个函数的作用,就是实现“把大象放进冰箱”这个小任务。比如,这个函数可以包括,拿来刀,把大象分成几块,以及分别把大象的不同部位放入冰箱的几个格子里。这样,我们就只需要在main函数里调用一下我们刚刚建立好的函数,就可以顺利完成任务了。

在这里插入图片描述
也正是因为如此,每一个程序都只能有一个main函数,这就像一篇文章只能有一条主要线索一样。

main函数的组成结构

每一个函数都由函数头函数体两部分构成。

在main函数中,函数头为“int main ()",其中,int 定义了函数的类型,main 是函数的函数名,“()”内正常来说应该放上函数里的变量,但是主函数有些特殊,“()”内无需加入任何变量。

同时,在main函数中,函数体包括执行函数任务的语句,以及最终结束函数的 “return 0;” 这个返回语句。函数体放在{}中书写,表明这一部分是属于这个函数的。

三、C++注释

在C++中,以"//"开头的语句被称为注释,它是程序员为读者或自己提供的说明性的文字,不会被编译器所识别,不作为有效代码的一部分。

注释可以位于单独某一行上,也可以和代码位于同一行,以//打头,到行尾结束。

四、预处理器和iostream文件

1、概念

一般来说,在每一个程序开头,我们都会看到“#include < iostream >”或者“#include < stdio.h >”之类的编译指令。这些编译指令到底有什么用呢?

我们都知道,在我们写下代码之后,机器其实是无法理解我们的代码的。我们写下的代码中每一个语句,都需要编译器翻译成二进制的机器语言。而那些编译指令中引用的头文件,就是存储着C++关键字与机器语言对应关系的数据库。

我们在写下代码之前,要先通过引用头文件,告诉编译器我们需要使用什么数据库,进而保证之后的代码内容可以顺利转换成机器语言。

在这一过程中,就是预处理器,识别编译指令并将头文件< iostream >中的内容与源代码链接起来。(编译和链接的过程详见大笔记(一)哦)

2、头文件名

C++编译器自带了很多头文件,每一个头文件都支持一组特定的代码工具。

在旧式的C语言中,一般头文件名都会带有一个.h扩展名,用于识别文件类型,如 stdio.h、iostream.h、math.h等。

而在C++中,仍然沿用老式的C语言头文件的内容,但对C++的头文件则没有扩展名。有些旧式C语言头文件被改成C++头文件,则这些文件也没有扩展名。

头文件类型约定示例说明
C++旧式风格以.h结尾iostream.hC++程序可以使用
C旧式风格以.h结尾math.hC,C++程序都可以使用
C++新式风格没有扩展名iostreamC++程序可以使用,使用namespace std
转换后的C加上前缀c,没有扩展名cmathC++程序可以使用,可以使用namespace std等

3、名称空间

刚刚在我们的表格中,提到了namespace ,也就是名称空间。一般来说,名称空间支持是一项C++特性,只有用C++语言才可以实现。

关于名称空间的概念,举个栗子,在我们编写程序时,可能存在两种不同内容但名称相同的函数,这两个函数来自不同的厂商拥有不同的版本,因此,我们需要将不同的版本封存到不同的名称空间中,当我们需要用到名称空间里的内容时,就可以用名称空间的名称来指出需要使用哪个厂商的版本,如:std::cout、Piscine::wanda()等。

按照这种方式,类、函数和变量便是C++编译器的标准组件,它们现在都被放置在名称空间std中。

但是,如果在每次使用类、函数和变量时都加上std::未免太过繁琐,由此,编译指令using namespace std便应运而生。这个编译指令使得名称空间中的所有名称都可用。

五、源代码的基本格式

1、分号

在C++中,每一个语句的结束以分号“;”为标志,因此,回车不再标志语句的结束,而是与空格、制表符的作用相同。同时,因为分号的存在,我们可以把一句代码放在几行上,也可以在同一行放上几条代码。

2、空格和回车

在C或C++中,不能把空格或回车放在元素(比如关键字)中间,也不能把回车放在字符串中间。

空格、回车和制表符统称为空白。元素与元素之间需要用空白将其分开,如 int main (),元素内不可有空白。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Persi111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值