程序结构(Structure of a program)

重要的事情说三遍:

强烈建议按照目录结构中的顺序学习!!!点我查看教程目录结构

强烈建议按照目录结构中的顺序学习!!!点我查看教程目录结构

强烈建议按照目录结构中的顺序学习!!!点我查看教程目录结构

学习编程语言的最佳方式是通过编写程序。通常,初学者编写的第一个程序是一个名为“Hello World”的程序,它只是简单地将“Hello World”打印到计算机屏幕上。尽管非常简单,但它包含了C++程序的所有基本组件:

// my first program in C++
#include <iostream>

int main()
{
  std::cout << "Hello World!";
}

让我们逐行检查这个程序:

第1行: // my first program in C++

两个斜杠表示该行的其余部分是程序员插入的注释,对程序的行为没有影响。程序员使用注释来包含有关代码或程序的简短解释或备注。在这种情况下,这是对程序的简短介绍性描述。

第2行: #include <iostream>

以井号(#)开头的行是由称为预处理器的工具读取和解释的指令。这些是程序本身开始编译之前解释的特殊行。在这种情况下,指令 #include <iostream> 指示预处理器包括一段标准的C++代码,称为头文件 iostream,它允许执行标准的输入和输出操作,例如将此程序的输出(Hello World)写到屏幕上。

第3行: 空行。

空行对程序没有影响。它们只是提高了代码的可读性。

第4行: int main ()

这一行开始了一个函数的声明。基本上,函数是一组代码语句,给它们一个名字:在这种情况下,这组代码语句的名字是“main”。函数将在以后的章节中详细讨论,但基本上,它们的定义是通过一个类型(int)、一个名字(main)和一对括号(())来引入的,可以选择性地包含参数。

名为 main 的函数是所有C++程序中的一个特殊函数;它是在程序运行时调用的函数。所有C++程序的执行都从 main 函数开始,无论该函数在代码中的实际位置如何。

第5行和第7行: {}

第5行的左花括号({)表示 main 函数定义的开始,第7行的右花括号(})表示结束。括号之间的所有内容构成了函数的主体,定义了调用 main 时发生的事情。所有函数都使用括号来表示其定义的开始和结束。

第6行: std::cout << "Hello World!";

这一行是一个C++语句。语句是一种可以实际产生某些效果的表达式。它是程序的核心,指定了其实际行为。语句按它们在函数体内出现的顺序执行。

这个语句有三个部分:首先,std::cout,它标识了标准字符输出设备(通常是计算机屏幕)。其次,插入运算符(<<),它表示后面的内容插入到 std::cout 中。最后,带引号的句子(“Hello World!”),这是插入到标准输出中的内容。

注意,语句以分号(;)结尾。这个字符标志着语句的结束,就像句号在英语句子中的作用一样。所有C++语句必须以分号结尾。C++中最常见的语法错误之一是忘记在语句末尾添加分号。

你可能已经注意到,并不是程序中的所有行在代码执行时都会执行操作。有一行包含注释(以 // 开头)。有一行是预处理器的指令(以 # 开头)。有一行定义了一个函数(在这种情况下,是 main 函数)。最后,有一行语句以分号结尾(插入到 cout 中),这行语句在 main 函数的大括号({ })内。

程序被结构化为不同的行并适当缩进,以便于阅读。但C++对缩进或如何将指令分隔到不同的行没有严格的规则。例如,除了

int main ()
{
  std::cout << "Hello World!";
}

我们还可以写成:

int main () { std::cout << "Hello World!"; }

都在同一行,并且这与前面的代码具有完全相同的意义。

在C++中,语句之间的分隔是通过结束分号(;)指定的,对于这一目的,分隔成不同的行并不重要。许多语句可以写在一行,或者每个语句可以独占一行。将代码分成不同的行仅仅是为了使其对阅读它的人类更具可读性和条理性,但对程序的实际行为没有影响。

现在,让我们向我们的第一个程序添加一个额外的语句:

// my second program in C++
#include <iostream>

int main ()
{
  std::cout << "Hello World! ";
  std::cout << "I'm a C++ program";
}

在这种情况下,程序在两个不同的语句中进行了两次插入到 std::cout。再次说明,代码分成不同的行只是为了提高程序的可读性,因为 main 函数完全可以定义为:

int main () { std::cout << " Hello World! "; std::cout << " I'm a C++ program "; }<br>

源代码也可以进一步分成更多的代码行:

int main ()
{
  std::cout <<
    "Hello World!";
  std::cout
    << "I'm a C++ program";
}

其结果将与前面的例子完全相同。

预处理器指令(那些以 # 开头的)不遵循这个通用规则,因为它们不是语句。它们是由预处理器在正式编译开始之前读取和处理的行。预处理器指令必须在它们自己的行中指定,并且由于它们不是语句,不需要以分号(;)结尾。

注释(Comments)

如上所述,注释不会影响程序的操作;然而,它们提供了一个重要的工具,用于在源代码中直接记录程序的功能和操作方式。

C++支持两种方式来注释代码:

// 行注释 line comment
/* 块注释 block comment */

第一种方式,称为行注释,从发现一对斜杠(//)开始一直到该行末尾的所有内容都会被忽略。第二种方式,称为块注释,从 /* 字符开始到第一次出现的 */ 字符之间的所有内容都会被忽略,可以包括多行。

让我们在第二个程序中添加注释:

/* my second program in C++
   with more comments */

#include <iostream>

int main ()
{
  std::cout << "Hello World! ";     // 打印Hello World!
  std::cout << "I'm a C++ program"; // 打印I'm a C++ program
}

如果在程序的源代码中包含未使用注释字符组合 ///**/ 的注释,编译器会将它们视为C++表达式,最有可能导致编译失败并产生一个或多个错误消息。

使用标准命名空间(Using namespace std)

如果你以前见过C++代码,你可能见过 cout 被使用而不是 std::cout。两者都指的是同一个对象:第一个使用的是它的非限定名(cout),而第二个则直接在命名空间 std 内限定(如 std::cout)。

cout 是标准库的一部分,所有标准C++库中的元素都在一个称为命名空间的东西内声明:命名空间 std

为了引用 std 命名空间中的元素,程序要么对库元素的每次使用进行限定(正如我们通过前缀 std::cout 所做的那样),要么引入其组件的可见性。引入这些组件可见性的最典型方式是通过使用声明:

using namespace std;

上述声明允许以非限定方式访问 std 命名空间中的所有元素(无需 std:: 前缀)。

有了这个声明,最后的示例可以重写为非限定方式使用 cout

// my second program in C++
#include <iostream>
using namespace std;

int main ()
{
  cout << "Hello World!

 ";
  cout << "I'm a C++ program";
}

在C++中,以显式限定和使用声明两种方式访问 std 命名空间中的元素都是有效的,并产生完全相同的行为。为了简化和提高可读性,这些教程中的示例将更经常使用后者的使用声明方法,尽管注意显式限定是唯一保证名称冲突绝不会发生的方法。

命名空间将在后续章节中详细解释。

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值