第2章 变量与常量
变量有三个要素,变量名,数据类型和值。
在实际编程的过程中,对变量进行操作一共有三个参与者。程序员,编译器,内存。这三个参与者分别扮演了不同的角色,内存就如同一个仓库,这个仓库里面分成了很多个大小相同的仓位。每个仓位的大小相同,把所有的仓位都按照顺序进行了编号,而且每次有人使用仓位的时候,仓位是不允许再分的,最少分配一个仓位。这个仓位其实就是字节(都是8个0/1位)。字节是C语言进行内存分配的最小单位(但不是操作的最小单位)。
有了仓库,接下来就需要一个仓库的管理者,编译器就好像是这个仓库管理员。
每当有人需要使用仓库时,这里面我们把每一个变量都看作是一次任务。仓库管理员会根据使用者的要求提供对应的仓位使用,分配的时候,管理员会遵守两个原则:
第一个原则,对于使用者对同一次任务申请的仓位,分配的仓位的序号必须是连续的,比如使用者这批货物需要4个仓位,那么5,6,7,8就是合法的,而3,6,7,8就是不合法的。
第二个原则对于使用者不同次任务申请的仓位,分配的仓位的序号可以是不连续的。
程序员在这里扮演的角色就是仓库的使用者,作为一个使用者,同样也有两点必须明确,那就是:
你必须在使用仓库之前向仓库管理员提出申请。
你必须明确向管理员说明你每次需要的仓位的数量。
在整个的过程中,(使用者)程序员作为使用者并不直接与仓库(内存)打交道,使用者只是在需要时向管理员提出申请,但是这里面有一个约定,使用者并不需要知道仓库(内存)里面一共有多少个仓位(字节),而且也知道自己申请的仓位的具体位置。这样做的目的也是为了方便,因为仓库(内存)的容量是以G为单位的。如果需要5个任务(变量)的话,假如分配的地址是分别是:0x000E31DA,0x000E4100,0x000E4108等等开始的5个地址,这样使用者在使用起来有很大的困难,
为了解决地址名又长又难记的困难,管理员(编译器)允许使用者(程序员)自己定义分配的仓位的名字,比如这次的任务我需要一个仓位,我自己可以给这个仓位起个名字比如FirstA,然后向管理员提出申请。管理员(编译器)分配了一个仓位0x000E4100以后,管理员(编译器)在自己的记录上写下了这样一个内容
变量名 |
对应地址 |
FirstA |
0x000E4100 |