变量和标识符

变量是一个具有唯一名称的存储单元(引用时不会出错),可以存储某种类型的值。编译器以特殊的内部格式为变量分配足够的所需内存,从而保证了这种能力:每种类型都有大小和相应的内存存储格式。第二章中会详细介绍这一点。

基本上,程序中有一个更严格的术语叫标识符,这个术语适用于变量、函数和许多其他实体的名称,我们后面会逐一学习。标识符遵循一些规则。特别是,它只能包含拉丁字符、数字和下划线;并且不得以数字开头。这就是为什么之前为函数选择的“问候语”符合这些要求。

一个变量可以有不同的值,并且这些值可以在程序执行过程中使用特定语句更改。

除了变量的类型和名称之外,变量还有一个特征是上下文,即程序中的一个区域,在此区域中,可以定义并使用变量,不会引发任何编译器错误。我们的例子可能有助于理解这个概念,而不需要从一开始就进行详细的技术推理。

关键在于,变量的特定实例是函数参数。该参数用于将某个值发送到函数中。很明显,包含该变量的代码片段,必须被限制在函数主体中。换句话说,该参数可以在函数块内部的所有语句中使用,但不能在函数块外部使用。如果编程语言允许参数在外部随意使用,将成为许多错误的根源,因为这有可能从与函数无关的随机程序片段中“破坏”函数内部。

在任何情况下,上述对于变量的定义虽然略显简单,但对于入门性章节来说已足够了。我们稍后将分析一些更细微的差别。

那么,我们来概括一下变量和参数的相关知识:它们必须具有类型、名称和上下文。我们将前两个特征明确地写在代码中,而最后一个特征则取决于定义位置。

我们来看看如何在 Greeting 函数中定义小时数的参数。我们已经知道所需的类型为 int,便能以合乎逻辑的方式选择名称:hour

string Greeting(int hour)
{
  return "Hello, ";
}

无论小时数是多少,该函数都将返回 "Hello,"。现在我们应添加一些语句,根据 hour 参数的值选择返回不同的字符串。请记住,有三种可能的函数响应选项:"Good morning"、"Good afternoon" 和 "Good evening"。可以假设我们需要 3 个变量来描述这些字符串。然而,在这种情况下使用数组要方便得多,数组确保用统一的编码算法访问元素。