本节书摘来自异步社区出版社《Visual C++ 开发从入门到精通》一书中的第2章,第2.2节,作者: 王东华 , 李樱,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.2 分析C++的程序结构

知识点讲解:光盘视频PPT讲解(知识点)第2章分析C++的程序结构.mp4

程序结构即程序的组织结构,它包括语句结构、语法规则和表达式,其内容包含代码组织结构和文件组织结构。在C++开发中,我们必须严格遵循这些规则,才能编写出高效、易懂的程序。

2.2.1 从一段代码看C++程序结构

先看如下代码。

//这是一个演示程序,它从命令行读入一个整数,然后加1再输出
#include <stdafx.h>
#include <iostream.h>
int main(){int x;cout<<"请输入一个数字:";cin>>x;cout<<"x=x+1="<<x<<endl;return 0;
}

在上述代码中,将整段程序被划分为如下3个部分。

1.注释部分
注释部分即上述代码中的首行,用双斜杠标注。

`//这是一个演示程序,它从命令行读入一个整数,然后加1再输出
注释部分即对当前程序的解释说明,通常会说明此文件的作用和版权等信息。`

2.预处理部分
预处理部分即上述代码中的第二行。

#include <iostream.h>
预处理是指在编译前需要提前处理的工作。例如,此段代码表示编译器在预处理时,将文件iostream.h中的代码嵌入该代码指示的地方,此处的#include是编译命令。在文件iostream.h中声明了程序需要的输入/输出操作信息。

3.主程序部分
主程序部分即剩余的代码。

int main(){int x;cout<<"请输入一个数字:";cin>>x;x=x+1;cout<<"x=x+1="<<x<<endl;return 0;
}

此部分是整个程序的核心,用于实现此程序的功能。C++的每个可执行程序都有且只有一个main函数,它是程序的入口。执行C++程序后,首先会执行这个函数,然后从该函数内调用其他需要的操作。下面依次分析上述代码的主要功能。

第1行“int x;”。表示定义一个对象,并命名为x,后面的分号表示此条代码到此结束。
第2行“cout<<"请输入一个数字:";”。表示通过cout输出一行文字。此处的cout是C++中预定义的系统对象,当程序要向输出设备输出内容时,需要在程序中引用此对象,输出操作符用“<<”表示,表示将“<<”右边的内容输出到“<<”左边的对象上。例如,此行代码表示在标准输出设备上输出字符串文字“请输入一个数字:”。
第3行“cin>>x;”。cin代表标准输入设备的对象,即C++中的预定义对象。当程序需要从输入设备接受输入时,就需要在程序中使用该对象。输入的操作符是“>>”,表示将“>>”左边接受的输入放到右边的对象中。当程序执行到该代码时,会停止并等待来自标准输入设备的输入。输入完毕后按Enter键,cin会接收输入并将输入放到对应的对象中,然后跳到下一条代码开始执行。
第4行“x=x+1;”。“+”当然是表示加法运算,将“+”两边的数字相加;“=”表示赋值,将“=”右边的运算结果放到“=”左边的对象中去。
第5行“cout<<"x=x+1="<第6行“return 0;”。表示跳出当前程序,即返回操作系统,使用数字0作为返回值。
图像说明文字

注意:很多编译器并不特别要求函数main必须有返回值,如Visual C++,但为了养成好的习惯,建议必须加入返回值。
2.2.2 C++的文件组织
简单的C++文件结构如图2-2所示。


图2-2 简单的C++文件结构

在如图2-2所示的结构中,只有文件first.cpp包含了当前项目中的程序代码。但是在日常应用中,往往一个项目的程序代码会比较复杂,例如,经常需要编写几个类和一些过程函数。为了文档的规整有序和程序的排错,需要为文档设置比较合理的安排方法。

(1)每个类的声明写在一个头文件中,根据编译器的要求可以加.h后缀名,也可以不加。这个头文件一般以类的名字命名。而且为了防止编译器多次包含同一个头文件,头文件总是以下面的框架组织。

#ifndef CLASSNMAE_H_
#define CLASSNAME_H_
在此写类的声明
#endif

在CLASSNAME_H_中,CLASSNAME就是在这个文件中声明的类名。

(2)将类的实现放在另一个文件中,取名为 classname.cpp(classname在类声明文件中声明的类名)。并且在该文件中的第一行包含类声明的头文件,如#include"classname"(C++新标准不支持带.h的头文件)。然后在此文件中编写类的实现代码,一般格式如下。

#include"classname"
(3)与类相似,在编写函数时,总是把函数的声明和一些常数的声明放在一个头件中,然后把函数的具体实现放在另一个头文件中。

(4)通常来说,如果在某个源文件中需要引入的头文件很多,或者为了源程序的简洁,可以将头文件的引入功能写在另一个头文件中,然后在源程序的第一行引入这个头文件即可。

(5)在文件中需要使用函数和类时,只需引入类和函数声明的头文件即可,无需包含实现的文件。

经过上述方法处理后,就会合理地为一个项目规划好整体的文件结构。在现实项目中,一个大型项目通常会包含很多.cpp文件和函数文件,如图2-3所示的结构。


图2-3 复杂的C++文件结构

《Visual C++ 开发从入门到精通》——2.2 分析C++的程序结构相关推荐

  1. 《Java 开发从入门到精通》—— 2.2 编写第一段Java程序

    本节书摘来异步社区<Java 开发从入门到精通>一书中的第2章,第2.2节,作者: 扶松柏 , 陈小玉,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.2 编 ...

  2. 《Visual C++ 开发从入门到精通》——2.7 变量

    本节书摘来自异步社区出版社<Visual C++ 开发从入门到精通>一书中的第2章,第2.7节,作者: 王东华 , 李樱,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  3. 《ASP.NET 开发从入门到精通》----2.3 编译和部署ASP.NET程序

    本节书摘来自异步社区<ASP.NET 开发从入门到精通>一书中的第2章,第2.3节,著 张明星 ,责任编辑 张 涛, 更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  4. 《51单片机应用开发从入门到精通》——2.2 跑马灯实例

    本节书摘来自异步社区<51单片机应用开发从入门到精通>一书中的第2章,第2.2节,作者 张华杰,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.2 跑马灯实例 ...

  5. 《libGDX移动游戏开发从入门到精通》一第2章 libGDX的架构分析

    本节书摘来异步社区<libGDX移动游戏开发从入门到精通>一书中的第2章,第2.1节,作者: 黄俊东 责编: 陈冀康,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  6. 《C++ 开发从入门到精通》——第2章 C++的重要特质分析2.1 什么是面向对象(object-oriented)...

    本节书摘来自异步社区出版社<C++ 开发从入门到精通>一书中的第2章,第2.1节,作者: 王石磊 , 韩海玲,更多章节内容可以访问云栖社区"异步社区"公众号查看. 第2 ...

  7. pythonweb开发-Python Web开发从入门到精通

    Python Web开发从入门到精通循序渐进地讲解了Python Web开发的核心知识,并通过具体实例的实现过程演示了Web开发程序的流程.Python Web开发从入门到精通共15章,内容包括Pyt ...

  8. 《Visual C++ 开发从入门到精通》——1.4 技术解惑

    本节书摘来自异步社区出版社<Visual C++ 开发从入门到精通>一书中的第1章,第1.4节,作者: 王东华 , 李樱,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  9. Nginx开发从入门到精通

    Nginx开发从入门到精通 缘起 nginx由于出色的性能,在世界范围内受到了越来越多人的关注,在淘宝内部它更是被广泛的使用,众多的开发以及运维同学都迫切的想要了解nginx模块的开发以及它的内部原理 ...

  10. 《ArcGIS Engine 地理信息系统开发从入门到精通(第二版)》——6.7 本章小结

    本节书摘来自异步社区<ArcGIS Engine 地理信息系统开发从入门到精通(第二版)>一书中的第6章,第6.6节,作者: 邱洪钢 , 张青莲 , 熊友谊 更多章节内容可以访问云栖社区& ...

最新文章

  1. # 模糊图片边缘_PS大神给你变个魔术,如何巧用PS把模糊的照片变清晰
  2. MCU中printf重定向实现
  3. HTML <dfn> 标签的简单介绍
  4. Spark Scalaa 几个常用的示例
  5. GDI+ 中发生一般性错误(在 OutputStream 中保存 PNG 格式图像时遇到的问题)
  6. apache做yum源_svn+apache的yum源安装方式
  7. python---数据清洗
  8. unity如何重新生成解决方案_揭秘Sherman:使用Unity制作影视级光照效果
  9. labview的初步
  10. Arch Linux 安装卓懿(xDroid)AUR 包
  11. 我的阴阳两界:革命时期的爱情--王小波
  12. Python视频制作 MoviePy框架afx音频效果示例
  13. 添加Win10文件夹详细信息------统一显示内容
  14. 【ADS867x】14 位 500kSPS 4/8 通道 ADC 简介及驱动应用示例
  15. 宗地权属图生成的解决方案设计
  16. oracle数据库impdp命令的使用方法
  17. matlab中生成随机正交矩阵
  18. 计算机视觉的最终表现!三维重建技术
  19. Vue学习笔记 7.7 周末去哪儿
  20. 战地4如何修改服务器,战地4如何修改服务器地址

热门文章

  1. 市场分析-全球与中国自动常压灌装机市场现状及未来发展趋势
  2. 网店版重生系列:多数据源单sqlMapClient导致NullPointerException问题跟踪
  3. 虚拟现实是利用计算机,虚拟现实技术就是利用计算机生成一种模拟环境
  4. <div></div>使用案例
  5. 使用express框架时,用MongoDB存放session时,出现错误,解决方法
  6. Calls to static methods in Java interfaces are prohibited in JVM target 1.6. Recompile with '-jvm-ta
  7. 中学教学常用计算机软件,中学计算机教学法
  8. 云计算势必会有广泛的应用
  9. 利用ucloud自带工具管理对象存储
  10. C语言游戏3:飞机游戏