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

简介:

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

2.2 分析C++的程序结构

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

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

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

请读者先看如下代码。

//这是一个演示程序,它从命令行读入一个整数,然后加1再输出。
# include <stdafx.h>
#include <iostream.h>
int main(){
  int x;
  cout<<"请输入一个数字:";
  cin>>x;
  x=x+1;
  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作为返回值。
F:paiban电子书41885图zy.png

注意:很多编译器并不特别要求函数main必须有返回值,例如Visual C++,但是为了使读者养成好的习惯,建议必须有返回值。

2.2.2 看C++的文件组织

如果是一个简单的程序,仅仅需要几行代码就可以完成,这种情况是最简单的,只需一个文件即可保存所有的代码,不需要我们在此讨论。例如图2-2所示的结构。


6847f8ae5568fcb28576861fe82231ec71ed898b

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

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

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

#ifndef CLASSNMAE_H_
#define CLASSNAME_H_
在此将你类的声明写在这里面
#endif

说明:CLASSNAMEH 中的CLASSNAME就是在这个文件中声明的类名。

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

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

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

⑤ 当在文件中需要使用函数和类时,只需引入类和函数声明的头文件,而无需包含实现的文件。

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


fefc01151a284be51f7b542dfa875da8fea379ea

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

相关文章
|
18天前
|
Ubuntu Linux Shell
C++ 之 perf+火焰图分析与调试
【11月更文挑战第6天】在遇到一些内存异常的时候,经常这部分的代码是很难去进行分析的,最近了解到Perf这个神器,这里也展开介绍一下如何使用Perf以及如何去画火焰图。
WK
|
26天前
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
59 1
|
2月前
|
存储 程序员 编译器
简述 C、C++程序编译的内存分配情况
在C和C++程序编译过程中,内存被划分为几个区域进行分配:代码区存储常量和执行指令;全局/静态变量区存放全局变量及静态变量;栈区管理函数参数、局部变量等;堆区则用于动态分配内存,由程序员控制释放,共同支撑着程序运行时的数据存储与处理需求。
115 21
|
2月前
|
Ubuntu Linux Shell
C++ 之 perf+火焰图分析与调试
【10月更文挑战第8天】在遇到一些内存异常的时候,经常这部分的代码是很难去进行分析的,最近了解到Perf这个神器,这里也展开介绍一下如何使用Perf以及如何去画火焰图。
|
2月前
|
Rust 资源调度 安全
为什么使用 Rust over C++ 进行 IoT 解决方案开发
为什么使用 Rust over C++ 进行 IoT 解决方案开发
72 7
WK
|
25天前
|
开发框架 移动开发 Java
C++和Java哪个更适合开发移动应用
本文对比了C++和Java在移动应用开发中的优劣,从市场需求、学习难度、开发效率、跨平台性和应用领域等方面进行了详细分析。Java在Android开发中占据优势,而C++则适合对性能要求较高的场景。选择应根据具体需求和个人偏好综合考虑。
WK
45 0
WK
|
26天前
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
46 0
|
2月前
|
NoSQL API Redis
如何使用 C++ 开发 Redis 模块
如何使用 C++ 开发 Redis 模块
|
4天前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
18 2
|
10天前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
36 5
下一篇
无影云桌面