以下内容来源于《51单片机轻松入门—基于STC15W4K系列》
局部变量 : ① 在一个函数内部定义的变量是局部变量,只能在函数内部使用(使用关键字auto,static,默认值auto可省略),在主函数内部定义的变量也是局部变量,其它函数也不能使用主函数中的变量。 ② 局部变量在没有赋值以前的值是不确定的,是以前残留在内存里的随机值,所以在定义局部变量的时候一定要初始化。 ③ 实际参数变量属于主调函数的局部变量。 ④ 形式参数变量属于被调函数的局部变量,它的作用范围仅限于函数内部所用的语句块。 ⑤ 在复合语句中定义的变量是局部于复合语句的变量,只能在复合语句块中使用。 ⑥ 不同函数中可以使用同名变量,它们作用域不同,因此不会发生冲突。 ⑦ 局部变量在函数被调用的过程中动态占有存储单元,调用结束立即释放。 全局变量 : ① 在函数外部定义的变量是全局变量,其作用域是变量定义位置开始至整个程序文件结束,可使用前缀auto,static,默认值auto可省略,实际中全局变量一般是在程序的开头位置定义。 ② 全局变量在没有赋值以前系统默认为0,全局变量初始化是在其定义时进行的,而其初始化仅执行一次,这种规则对于数组、结构体和联合体也同样适用。 ③ 使用全局变量可增加函数间数据传递的渠道,全局变量可以将数据传入在作用域范围内的函数,也可以将数据传回到作用域范围内的其它函数,使用全局变量可让函数传回多个值,但一定要注意全局变量传递数据是数据传递的后门,全局变量在程序中任何地方都可以更新,使用全局变量会降低程序的安全性与移植性,因此,原则上尽量少用全局变量,能用局部变量的就不用全局变量,要避免局部变量全局化。 ④ 使用其它文件的全局变量,可通过extern关键字引用,或用文件包含处理。 ⑤ 局部变量若与全局变量同名,则在局部变量的作用域内,全局变量存在,但不可见,全局变量的作用被屏蔽。 ⑥ 全局变量在程序运行过程中一直占用RAM存储单元。
|