C++ 中标记、标识符和关键字的区别

2025年3月17日 | 阅读 7 分钟

在本文中,我们将讨论 C++ 中 **Token、标识符** 和 **关键字** 之间的区别。但在讨论它们的区别之前,我们必须了解 C++ 中的 Token、标识符和关键字及其类型和特征。

什么是 Token?

Token 是 C++ 程序中最小的独立单元,作为语法的构建块。它们是编译器识别的基本部分,定义了 C++ 代码库的 **结构** 和 **逻辑**。Token 分为几种类型,每种类型在程序执行中都有其作用。

词法单元的类型

C++ 中的 Token 被划分为多种类型

关键字

  • 关键字 是 C++ 语言中预定义的保留词,具有独特的含义和功能。
  • 这些词有明确的含义,不能被修改或用作标识符。
  • C++ 中的关键字包括 if、else、for、while、int、class 和 return。它们构成了语言的基础,定义了其核心控制结构和数据类型。

标识符

  • 变量、函数、类和用户定义实体都具有 **标识符**。
  • 这些名称由程序员创建,它们作为内存区域的引用,允许在程序内进行操作和交互。

标识符遵循特定的规则

  • 它们可以是字母(大写和小写)、数字或下划线。
  • 标识符必须以字母或下划线开头。
  • 它们不应与关键字混淆。
  • 在 C++ 中,标识符区分大小写。

常量

  • 在 C++ 中,常量是在程序执行期间不会改变的固定值。
  • 整数常量、浮点数常量、字符常量和字符串字面量是一些例子。

运算符

  • 运算符是 C++ 中用于对操作数执行指定操作的符号。
  • 算术运算符 **(+, -, *, /)、** 关系运算符 **(>, >=, ==,!=)、** 逻辑运算符 **(&&, ||,!)**、赋值运算符 **(=, +=, -=)** 等是例子。
  • 运算符有助于在程序中执行各种计算和比较。

分隔符和界符

  • 分隔符和界符是用于结构化和分隔程序不同元素的字符。
  • 花括号 {}、圆括号 ()、逗号 ,、分号 ; 等符号是例子。
  • 它们有助于组织代码块和定义程序语法。

字面量

  • **字面量** 是在程序中使用的显式值。
  • 数字字面量(整数或浮点数)、字符字面量(用单引号 '' 括起来的单个字符)和字符串字面量(用双引号 "" 括起来的字符序列)是例子。

Token 在 C++ 中的作用

Token 是构成 C++ 程序语法的基本组成部分。它们是编译器分析、处理和翻译成机器可读指令的单元。理解各种 Token 类型及其功能对于构建可靠高效的 C++ 代码至关重要。

例如,像 **int x = 10**; 这样的代码行包含许多 Token

int: 这是一个指示数据类型的关键字。

x: 这是一个代表变量名的标识符。

=: 这是赋值运算符。

10: 这是一个包含变量 x 初始值的整数字面量。

; 分号充当语句终止符。

什么是标识符?

在编程世界中,**标识符** 是 C++ 程序中各种部分的名称。它们是用户定义的 Token,可用于表示 **变量、函数、类、常量、标签** 和 **用户定义类型**。标识符在使代码易读、易懂和易于维护方面起着极其重要的作用。

标识符的特征

标识符有几个特征。一些主要的标识符特征如下:

  • **标识符** 可以包含 **字母**(大写和小写)、**数字** 和 **下划线** (_)。

但是,它们必须遵循以下指南:

  1. 它们不得以数字开头。
  2. 标识符中不允许空格和特殊字符,例如 **@, $, %**。
  3. 由于 C++ 是 **区分大小写的**,因此大写和小写字母是分开的。
  4. 例如,myVariable、MyVariable 和 MYVARIABLE 都是不同的标识符。
  • **保留关键字:** 标识符和 C++ 关键字或保留词不能相同。关键字是语言中为特定目的而建立的保留词。例如,标识符不能命名为 int、class、if、while 等,因为这些词在 C++ 中具有指定含义。
  • **有意义且描述性强:** 选择有意义且描述性强的标识符是一种明智的做法。此活动有助于理解变量、函数和其他代码组件的用途。例如,将 totalAmount 用作表示总金额的变量标识符比使用 temp 这样的通用术语更具信息量。

标识符的类型

C++ 中有几种标识符类型。一些主要的标识符类型如下:

变量标识符

  • 变量 **ID** 是分配给存储数据的内存位置的名称。
  • 它们表示在程序运行时可以更改的值。

函数标识符

  • 函数标识符是分配给执行特定活动的已编码块的名称。
  • 这些名称用于调用和执行相应的代码块。

类标识符

  • 类标识符是用于通过创建类来定义新数据类型的名称。
  • 类包含数据和操作这些数据的方法。

常量标识符

  • 常量标识符是分配给在整个程序执行过程中保持不变的值的名称。
  • 它们使用 const 关键字创建。

什么是关键字?

**关键字** 是 C++ 中具有专门定义和功能的保留词。这些词对于描述 C++ 程序的结构、控制流、数据类型和功能至关重要。关键字不能被重新定义或用作标识符,因为它们是语言的基本组成部分,并且在帮助特定编程活动方面具有不同的功能。

关键字在 C++ 中的作用

  • 关键字对于创建 C++ 程序的语法和逻辑至关重要。
  • 它们是语言语法的重要组成部分,并且被限制用于特殊用途。
  • C++ 程序员使用关键字来创建数据类型、控制流结构、访问修饰符和其他功能。关键字有助于概述程序的行为和功能,确保正确执行。

关键字类别

C++ 提供了一组预定义的关键字,这些关键字被保留用于特定活动。一些最重要的关键字类别是:

数据类型关键字

  • 在 C++ 中,这些关键字用于指定不同的数据类型。
  • **int、char、float、double、bool:** 这些是变量声明关键字,分别代表整数、字符、浮点数和布尔值。
  • **void:** 它表示函数不返回值。

控制流关键字

  • 控制流关键字用于控制程序的 **执行流程**。
  • **if、else:** 这些关键字与条件分支相关。
  • **for、while:** 这些关键字用于控制循环。
  • **case、break 和 default:** Switch-case 语句使用关键字来控制程序流程。

修饰符和说明符关键字

这些关键字会更改变量、函数或类的行为。

**Const:** 它表示实体的(值)不能被更改。

**Static:** 变量的值在函数调用之间保持不变。

**public、private 和 protected:** 这些关键字用于在类中指定访问级别(面向对象编程概念的一部分)。

存储类别关键字

  • 这些关键字控制变量存储的持续时间和范围。
  • 存储类别关键字包括 auto、register、static、extern 和 mutable。

其他关键字

C++ 包含其他关键字,它们具有各种功能。

**return:** 这是一个用于退出函数并返回值的关键字。

**sizeof:** 这是一个指定数据类型或变量大小的关键字。

**namespace、using:** 用于管理和使用命名空间成员的关键字。

用于定义用户定义数据类型的关键字包括 **class、struct** 和 **enum**。

示例

让我们举一个例子来演示 C++ 中的 Token、关键字和标识符

输出

Difference between Tokens, Identifiers, and Keywords in C++

C++ 中 Token、标识符和关键字的区别

Token、标识符和关键字在 C++ 中存在一些主要区别。一些主要区别如下:

方面Token标识符关键字
定义它是 C++ 语法中最小的独立单元。程序元素的自定义名称它们是 C++ 中预定义的保留词。
角色它们用于定义 C++ 代码库的结构和逻辑。它代表变量、函数和类。它们用于在代码中定义特定功能。
示例if、int、=、;、+、123 等。variableName、functionName、classNameif、else、for、int、return 等。
类型关键字、运算符、字面量等。用户创建的名称。具有特定含义的保留词。
类别关键字是 Token 的一个子集。标识符是 Token 的一种类型。关键字是一个独立的 Token 类别。
目的定义语言的语法和语义。代表程序内的实体。为特定的语言目的保留。
用途构造语句和表达式。引用内存位置。定义控制流、数据类型等。
不能使用。不能重新定义或修改。可以由程序员创建。不能用作用户定义的名称。

结论

Token、标识符和关键字在 C++ 编程领域中对确定程序的结构、逻辑和功能起着至关重要的作用。程序员必须认识到这些关键部分之间的差异,才能开发高效且正确的代码。理解关键字、标识符和 Token 的交互方式,使开发人员能够构建健壮、结构良好且功能强大的 C++ 应用程序。