变量的分类
一、按数据类型分类
1、整数型 ①、char ; unsigned char ②、int ; unsigned int ③、short int ;unsigned int ④、long ;unsigned long 2、浮点型 ① float ②double 3、指针 4、结构体 5、联合体 7、枚举型 8、数组
二、按变量存储类型
1、auto (动态存储类型) 动态存储类型变量只能是局部变量,调用相应函数时为该变量开辟内存空间,调用结束后释放该变量的内存空间。需要赋初值,初值不定。
2、static (静态存储类型) 静态变量可以在函数内部定义(必须加static),也可以在函数外部定义。程序执行时就为该变量开辟空间,然后一直占用该内存空间。 static的用法: ①、局部变量加static:函数内的变量可以使用static来防止变量释放,从而保持上次调用函数时的值供下次调用时使用。 ②、全局变量加static:函数外部的变量为全局变量,对于该工程的所有文件都可见,使用static可以使某一文件中的外部变量只对该文件可见,从而限制了全局变量的作用域,这样不同的文件可以定义同名的外部变量。
3、extern(外部变量) 该关键字只用于声明,而不用于定义。 全局变量对该工程的所有文件都可见,但文件不可以直接使用外部文件的全局变量,需要使用extern来声明才可以使用。
故:对于全局变量,加static限制全局变量的作用域,加extern声明其外部文件可用。他们是对立的。
三、按作用域
1、局部变量(定义在函数内部的变量) 只允许在定义它的函数内部使用,在函数外的其它任何地方都不可见。 可以与全局变量同名,但调用函数时使用的是局部变量。 需要赋初值。
2、全局变量(定义在函数外部的变量) 不需赋初值,默认为0.
四、对于C51还可以按存储位置定义
data、idata、xdata
总: 1、局部变量定义在函数内部,默认为auto型,可以使用static定义为静态变量。 2、全局变量定义在函数外部,默认为对所有文件可见,可使用static来限制作用域(仅该文件使用),和使用extern来外部声明(可外部使用)。 函数也可以加static来限制作用范围
|