程序里的变量,其实就是一些用于保存运算结果的存贮器单元。在高级语言写的程序里,那些变量的绝对地址是由编译器分配的,这样让程序员轻松点,不必去费那脑筋。
1、但是,假如不分3721给每个变量都规定一个唯一的地址的话,存贮器的使用效率就会很低,为此编译器把大量仅用于运算过程,用过之后不再要的变量的地址以后再分配给别的变量,于是做到了重复使用,这就是“动态变量”。
分配给一个函数内的动态变量的地址,有个好办法就是在堆栈的顶端画出一块区域。一旦退出函数,这块区域仍可以被其他程序重复使用。——这个光读文字去理解恐怕有些难,最好看个具体例子,或单步跟踪一下函数入口处的代码就看懂了。
2、“静态变量”则简单多了,分配给它的地址是个常数,比如0x100。只要程序里不对0x100写的话内容是不会被冲掉的,跟函数退不退出没关系。
3、“全局变量”是最外层的程序(叫Background,或叫主程序,反正不再会被其他程序调用了),使用的变量,它想动态也不行,只可能是静态的(想想,为什么

)。