使用经验 1 C++程序由哪些部分构成

时间:2025-05-09 07:29:35

目录

1. 编译指示

2. 声明性语句

3. 可执行语句

4. 简单语句

5. 复合语句

6. 控制语句

7. 函数

8. 类的定义和使用

9. 注释

请谨记


在介绍C++程序构成之前,我们先看一个简单Hello world的C++程序。Hello world 程序的源代码如下。为了方便描述,我们这里为Hello world程序加上行号。Hello world 虽然简单,但是它涵盖了C++程序所包含的所有组成。

//   最简单的Hello world示例程序,实现Hello world屏幕打印  C++语言的注释。
001  #include <iostream>  // 编译指示,告诉编译器在编译过程中所需信息的来源。

003  using namespace std; // 声明性语句,using namestapce std; 是告诉编译器使用std命名空间。

005  int  main(int argc, char * argv[])  // main 函数,每个C++程序都必须包含此main函数。
006  {
007      // 屏幕打印Hello world     C++语言的注释
008       cout << "Hello world!" << endl; // 可执行性语句
009       return 0;                      // main函数返回值。
010  }

我们先简单的概括一下C++程序构成:C++程序包含一个或多个函数,但是必须有一个main函数。操作系统通过调用main函数实现程序的执行,程序执行完毕后必须由main函数返回一个值给操作系统。在C++程序中可能还会包含编译指示,声明语句,类对象定义和使用等非必选项。

现在我们对照Hello world分析一下。

1. 编译指示

001行代码是一句“编译指示”,编译指示功能就是告诉编译器编译过程中所需要的一些信息。它们影响一个程序是否能被正确的编译,并在程序运行期造成影响。编译指示格式为:在新的一行中,以#开始并且不使用“分号”结束。

比如,Hello world实例:

#include<iostream>

就是告诉编译器,<iostream>中实现的对象在后续代码中可以使用,并且对后续代码造成输出Hello world影响。

2. 声明性语句

003行是一句“声明性语句”,声明性语句在作用上完全等同于“编译指示”:他们同样仅影响编译过程,但在编译结果中并不生成对应的指令。003行是一种声明性语句,常见的声明性语句还有下述这种。在一个cpp文件中定义,

int nValue  = 2;

在另外一个cpp文件中声明nValue变量,

extern int nValue;

extern int nValue; 也是声明性语句,在编译过程中不生成对应指令,只是告诉编译器nValue已经在别处定义了,你可以直接使用无需再次定义。

提示:声明性语句是C++的标准语句,只是它不生成指令。声明性语句在语法格式上和普通语句没有明显区别。

3. 可执行语句

007和008两行就是可执行语句。可执行语句和声明性语句一样都是C++的标准语句。但是与声明性语句不同,可执行语句在编译过程中生成对应的指令。可执行语句类似于自然语言中的句子,C++中有完成单一任务的简单语句,也有作为一个单元执行的一组语句组成的复合语句。还有条件分支语句和循环控制语句,所以可执行语句按照其功能可以分成:简单语句,复合语句,控制语句,try语句等。

说明:可执行语句是C++程序的主题,大型C++工程99%以上的代码都是可执行语句。

4. 简单语句

这种语句是最常用的一种语句形式。我们经常写的表达式语句,空语句都属于简单语句。通过简单语句可以完成某单一功能。如下面这行代码就完成两数的求和。

iVal = v1 + v2;

5. 复合语句

复合语句通常被称为块语句。使用花括号括起来的语句序列(可以为空),既一个复合语句或语句块。块标示了一个作用域,在块中引入的标识符名称只能在该块或该块嵌入的子块中可以访问,此语句块以外无法访问。

复合语句通常用在语法规则要求使用单个语句,但程序逻辑却需要不止一个语句的地方。下述代码就是一个标准的复合语句块。

{
    int iVal = 0;
    iVal = 1 + sum(1, 5);
}

此复合语句定义了一个只在此语句块可见的int变量iVal,然后将1和sun(1, 5)的和赋给iVal。在语句块之外iVal不可见。

6. 控制语句

控制语句完成程序的逻辑控制,常见的控制语句有if-else语句,for循环语句,while循环语句,do-while循环语句及goto语句等。这些语句主要完成程序逻辑和流程的控制。是C++语言的重要组成部分。

7. 函数

函数是C++程序的重要组成部分, C++的函数定义必须包含4个元素:返回类型,函数名称,圆括号内的形参表和函数体。这里所说的函数体指的是以花括号开始并以花括号结束的语句块。Hello world 程序中main函数就是C++的一个标准函数,main函数的返回类型为int,函数名称为main,形参表为空,函数体为大括号包含的006到010共5行语句。

函数的名称说明函数的功能,返回值返回函数执行后输出结果,形式参数表示函数的输入或输出。函数体决定函数的执行过程。在C++函数中有一个特别重要的关键字,用于在函数语句执行完之后返回结果给回调者。这个关键词就是“return”。一般函数定义格式如下:

返回类型  函数名称(形式参数1,形式参数2,…,形式参数n);
{
     return ;
}

为了描述的更加形象,现在我们看一个字符串输出打印函数,代码如下:

// 实现字符串打印输出
void StrPrint(char *pszPrtStr)  实现打印输出
{
    // 在屏幕上输出字符串。
    printf(“this string is %s\n”, pszPrtStr); // 在屏幕上输出字符串。
    return;
}

函数的函数名称为:StrPrint,意思为字符串打印函数。返回类型为void,表示返回类型为空类型。只有一个形式参数是指向字符串的指针pszPrtStr,类型为char *。

C++和C函数的区别:

  • C++的函数定义必须同时包含返回类型,函数名称,形参表格和函数体。但是在C++标准化之前返回类型不是必须的,如果一个函数缺少显示返回类型,函数的返回类型将被假定为int类型。
  • C语言的函数定义由于历史发展的原因可以没返回类型。如下述的Max函数在C语言编译器中编译时就是合法的。在标准化后的C++编译器中编译就是非法的。这儿需要说明的是C语言中如果一个函数没有返回值,默认返回int类型。
// 求两数的最大值
Max(int nA, int nB) 
{
     return (nA > nB)?(nA):(nB);
}

8. 类的定义和使用

C++是一个面向对象的语言,类在C++中占用举足轻重的地位,占有主体的地位。一个类的定义包括类成员变量和类成员方法定义,后续章节会员专门的议题讨论类的定义和使用,在此例中cout就是一个类对象,使用此类对象我们可以完成数据的输出和显示功能。

9. 注释

注释顾名思义就是C++程序的解释。他不是C++程序的必须组成部分,但是重要组成部分。注释可帮助他人阅读程序,理解程序的意图。注释不会增加C++程序可执行程序的大小,因为在编译时编译器会忽略所有注释。

C++有两种类型的注释:单行注释和成对注释两种。

  • 单行注释以双斜线(//)开头,行中双斜线右方的所有内容就是注释,会被编译器忽略。

  • 成对注释指(/**/),从C语言继承而来,这种注释以/*开头,以*/结束。编译器把落入注释对/**/中的内容作为注释。注释对可以跨越程序的多行,但不是一定要如此。

注意:注释对不可嵌套,注释总是以/*开始并以*/结束。这意味着,一个注释对不能出现在另一个注释对中。

另外由注释对嵌套导致的编译器错误信息容易使人迷惑。所以在实际编程过程中需养成良好的编程习惯,禁止注释对嵌套。

请谨记

  • 一个C++程序是完成某一功能的一个整体,它由编译指示,执行性语句,声明性语句,函数及注释等组成。

  • 每个C++程序都必须有一个入口函数即main函数,这个函数的名称必须为main,返回类型必须为int。