瑞问:“数字还是字符,不是用''区分的吗?”
到目前为止,本书程序中出现的都是具体数字,所以,我们很容易判断出是整数、小数,还是字符。为了实现更复杂的运算,编程语言提供了一个重要的语法,那就是变量。变量可以在程序运行的过程中变化数值。
瑞说:“变量就是变化的量。”
变量的思想来自代数,用一个字母临时代替数字,在计算的过程中把结果放到这个字母中。程序为了更加灵活,允许用一个单词作为变量。
从本质上来讲,变量是内存中一个具体的地方。内存既可以存储数值,也可以取出之前所存的数值。内存的容量很大,使用时需要确定具体数值存储的位置,以便以后可以在这个位置上找到之前存储的数值。为了有效地管理存储位置,内存为每个存储单位都编上了号。这个编号,我们称之为内存地址。内存地址是一大串连续的数字,记住这些数字对于程序员来讲是非常困难的,所以C语言提供了一个功能,可让你自己定义一个名字,代表那个难懂的内存地址。
瑞说:“所以,变量就是给一个内存地址起了个名字。”
还记得我前面说的,我们得告诉计算机,我需要预定多大的空间,存储可能的数值,于是在使用变量前,我们会先写上一行对变量的声明。
瑞问:“int以前没见过,这是个什么?”
这句话意味着我申请了内存的一个地方,给这个地方命名为a,给这个变量a准备int的大小。内存的每个地方都有内存地址,这个内存地址永恒不变,只不过它现在又多了一个名字,那就是a。运行时系统会分配一个空闲的地址给这个叫a的变量。分配内存地址,是有具体规则的。
这是个聪明的设计,用变量代替了内存地址分配的具体操作,程序员不需要关心细节。这个思想在计算机科学中随处可见。如果是你来设计,那么是否会有更好的方法,或运用这个思想设计其他的语法?