
4.3 学习变量的用法
变量是内存中的一个地点,用来存放某种类型的值,在该变量的生命期内,它所保存的值可以发生变化,我们通过变量的名称(name)来指代这个地点。我们在定义变量时需要指出它的类型(type)与标识符(identifier,也就是名称),定义好之后,这个变量的生命期就开始了,它的取值可以在整个生命期内固定不变,也可以为程序所修改或覆写,也就是说,我们可以把同类型的另一个值赋给该变量。如果当初声明该变量的这个代码块执行完毕,那么变量的生命期就结束了,它所占据的内存会为系统所释放(也叫作解除分配,deallocate)。我们会在第25章详细讨论变量的生命期。
总之,变量就是内存中某个带有标识符(也就是名称)的地点,它有相关的类型,能够用来表示该类型的某个值。变量必须具备三个要素:
□独特的标识符或名称
□类型
□值
变量总是应该从某个已知的值开始用起,就算这个值是0,我们也应该明确地把它设置给该变量,而不能想当然地认为这个变量在刚登场时值必定是0。这种给变量设定初始值的行为叫作初始化(initialization)。假如不给变量设置初始值,那我们就没办法确定该变量的值,而且它的值可能会在每次运行这个程序或函数时都有所不同。这是因为,你在运行这个程序或函数之前可能还运行了其他的程序或函数,而那个程序或函数可能也会使用该变量所占据的这块内存。系统在执行完那个程序或函数之后会把它所占据的内存释放掉,但这并不意味着系统会自动清理内存中的值,系统有可能会把这些值留在那里,于是,我们运行当前这个程序或函数时看到的变量值,可能是上一个程序或函数遗留下来的值。因此,在使用变量之前,总是应该先把变量所占据的内存初始化成某个已知且合理的值。
变量的初始化与修改都通过赋值操作完成,给变量赋值意思就是把这个值保存到该变量所指代的内存位置。你也可以给常量赋值,然而赋值之后就不能再修改了。
开始讲解变量的取值与赋值之前,我们首先必须知道,怎样在创建并声明变量时明确指定该变量的类型。