首页 理论教育函数变量存储方式-单片机基础应用

函数变量存储方式-单片机基础应用

【摘要】:图5-7变量的存储种类图函数变量按其有效作用范围可以划分为局部变量和全局变量,还可以按变量的存储方式为其划分存储种类。按照默认规则,在函数体内部或复合语句内部定义的变量,如果省略存储种类说明,该变量即为自动变量。另一方面,Cx51编译器能够识别程序中使用频率最高的变量,在可能的情况下,即使程序中并未将该变量定义为寄存器变量,编译器也会自动将其作为寄存器变量来处理。

图5-7 变量的存储种类图

函数变量按其有效作用范围可以划分为局部变量和全局变量,还可以按变量的存储方式为其划分存储种类。在C语言中,变量有4种存储种类,即自动变量(auto)、外部变量(extern)、静态变量(static)和寄存器变量(register)。这4种存储种类与全局变量之间的关系如图5-7所示。

1)自动变量是C语言中使用最为广泛的一类变量。按照默认规则,在函数体内部或复合语句内部定义的变量,如果省略存储种类说明,该变量即为自动变量。习惯上通常采用默认形式。(www.chuimin.cn)

2)使用存储种类说明符“extern”定义的变量称为外部变量。按照默认规则,凡是在所有函数之前,在函数外部定义的变量都是外部变量,定义时可以不写extern说明符。但是,在一个函数体内说明一个已在该函数体外或者别的程序模块中定义过的外部变量时,则必须使用extern说明符。

3)使用存储种类说明符“static”定义的变量称为静态变量。

4)为了提高程序的执行效率,C语言允许将一些使用频率最高的那些变量定义为能够直接使用硬件寄存器的所谓寄存器变量。定义一个变量时,在变量名前面冠以存储种类符号“register”即将该变量定义成了寄存器变量。寄存器变量可以被认为是自动变量的一种,它的有效作用范围也与自动变量相同。由于计算机中寄存器是有限的,因此不能将所有变量都定义成寄存器变量。通常在程序中定义寄存器变量时只是给编译器一个建议,该变量是否能真正称为寄存器变量,要由编译器根据实际情况来确定。另一方面,Cx51编译器能够识别程序中使用频率最高的变量,在可能的情况下,即使程序中并未将该变量定义为寄存器变量,编译器也会自动将其作为寄存器变量来处理。