变量是指其值可以变化的量。在计算机中,指令代码、数据都存储于内存中。变量也需要存储在内存中。在计算机中,每个变量都被分配了一块内存空间,在这些空间存储的就是变量的值。
在源代码中,每个变量都有变量名。实际上,编译后的目标代码里并没有变量名字,而是记录着变量在内存空间中的地址。在C语言中,通过变量名可以访问到变量的值,对变量名的访问,就是对变量值的访问。
在编译过程中,编译器会建立一张变量符号表,该表记录的数据是:变量类型、变量名、变量地址等信息。例如,编译器会建立如图所示的变量符号表:
当源代码中需要将新值赋给变量x的时候,比如x=5678。编译器通过变量名查询变量符号表,得到变量的地址为2000,就可以把新值5678存储在地址编号为2000的内存空间中。
当源代码中需要取变量X的值的时候,编译器实际上去查询变量符号表,发现了变量x对应的内存地址是2000,变量类型是int,于是就可以从内存地址为2000的空间中取得变量的值。
变量声明
int a,b:
这是向编译器声明程序中将会用到两个整型变量,其名字为a和b。此时并不会进行真正的内存分配动作,也就是此时并没有内存地址和变量关联。
变量赋值
a=1;
第一次访问变量的时候,编译器会为变量分配内存,假如给a分配的内存空间的编号为2000,于是将数值1存储在2000所对应的内存空间中。