目录
1. 内存空间
(1) 内存中供用户使用的存储空间分为:
① 程序区
② 静态存储区
③ 动态存储区
(2) 动态存储区存放以下数据:
① 函数形式参数。
② 函数中定义的没有用关键字static声明的变量。
③ 函数调用时的现场保护和返回地址。
(3) 静态存储区存放以下数据:
①
②
③
2. 静态存储的变量
在静态存储区分配存储单元。
(1) static局部变量
static 数据类型 变量名;
在函数调用结束后,局部变量不释放内存而继续保留原值。
注意:
- 编译时赋初值
- 静态局部变量不赋初值的话,编译时自动赋初值为0(数值型变量)或‘\0’(字符型变量)
- 虽然静态局部变量调用结束后仍然存在,但其他函数时不能引用它的,只能被本函数引用。
- 若非必要,不要使用。
(2) register变量
register 数据类型 变量名;
对于频繁使用到的变量,将其值放在CPU的寄存器里,提高执行效率。
注意:
- 优化的编译系统能自动识别使用频繁的变量,自动存放在寄存器。一般只需认即可。
(3) 全局变量
作用域: 定义处(不能被上面使用)到该文件结束(不能到另一个文件)。
(4) extern变量
-
在文件内拓展外部变量的作用域
-
将外部变量的作用域拓展到其他文件
(5) static外部变量
将全局变量限制在其文件中,不被其他文件引用。默认情况就是这样,static为了防止extern的外部引用。
3. 动态存储的变量
在动态存储区分配存储单元。
(1) auto变量
在调用函数时,系统给auto变量分配存储空间,调用结束后自动释放存储空间。
注意:
- 函数中定义的变量默认为auto变量
对全局变量声明存储类型的作用是变量作用域的拓展问题。
对局部变量声明存储类型的作用是指定变量存储区域以及由此产生的生存期问题。