标识符是什么,C++标识符详解

标识符是一个由程序员定义的名称,代表程序的某些元素。变量名就是标识符的示例。只要不使用任何 C++ 关键字,程序员可以在 C++ 中选择自己的变量名。

C++ 中的关键字构成了该语言的“核心”,它们都有其特定目的。表 1 显示了 C++ 关键字 的完整列表,请注意它们都是小写的:

表 1 C++关键字
alignas const for private throw
alignof constexpr friend protected true
and const_cast goto public try
and_eq continue if register typedef
asm decltype inline reinterpret_cast typeid
auto default int return typename
bitand delete long short union
bitor do mutable signed unsigned
bool double namespace sizeof using
break dynamic_cast new static virtual
case else noexecpt static_assert void
catch enum not static_cast volatile
char explicit not_eq struct wchar_t
char16_t export nullptr switch while
char32_t extern operator template xor
class false or this xor_eq
compl float or_eq thread_local  

在给变量命名时,应选择能指示变量用途的名称。例如,有人可能会这样给变量命名:

int x;

但是,像 x 这样的名字对于提示变量的用途其实没有什么帮助。以下是一个更好的例子:

int itemsOrdered;

名称 itemsOrdered 可以让任何读取程序的人都会对该变量的用途有所猜测。这种编写代码的方式有助于生成自我解释型的程序,这意味着通过阅读代码就可以了解该程序的内容。因为现实中的程序通常有成千上万行代码,所以代码尽可能地自我解释是非常重要的。

有些人可能已经注意到变量名称 itemsOrdered 中存在的大小写字母混合的状况。虽然所有 C++ 的关键字都必须用小写字母表示,但在自定义的变量名中还是可以使用大写字母的。

itemsOrdered 中的 O 采用大写的原因是为了提高可读性。通常情况下,“items ordered”是两个单词,但是在变量名中不能有空格,所以两个单词必须组合成一个。当“items”和“ordered”组合在一起时,也就得到了如下变量定义语句:

int itemsordered;

为了使代码更容易阅读,在命名变量时,将第 2 个单词和任何后续单词的首字母大写,就像 itemsOrdered 这样。当然,这种风格的编写方法并不是强制性的,你完全可以按自己的习惯釆用全部小写、全部大写或组合使用。实际上,有些程序员喜欢使用下画线字符来分隔变量名中的单词,如下所示。

int items_ordered;

合法标识符

无论釆用哪一种编写风格,都要保持一致,并使变量名尽可能提示其用途。以下是所有 C++ 标识符必须遵循的一些特定规则。
  • 第一个字符必须是字母 a 到 z、A 到 Z 或下画线字符(_)中的一个。
  • 第一个字符后,可以使用字母 a 到 z 或 A 到 Z、数字 0 到 9 或下画线。
  • 大小写字符是不同的。这意味着 ItemsOrdered 与 itemsordered 不一样。

表 2 C++变量名示例
变M名 是否合法
dayOfWeek 合法
3dGraph 非法。变量名不能以数字开头
_employee_num 合法
June1997 合法
Mixture#3 非法。变量名只能使用字母、数字和下画线

表 2 列出了若干变量名称,并指出了它们在 C++ 中是合法还是非法。