静态存储方式和动态存储方式
静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式。
动态存储方式是在程序运气期间根据需要进行动态的分配存储空间的方式。
内存中供用户使用的存储空间分为三个部分
(1)程序区;
(2)静态存储区;
(3)动态存储区。
C的存储类型包括四种:自动的(auto),静态的(static),寄存器的(register),外部的(extern)。
自动变量:如果不专门声明为静态存储类别,都是动态的分配存储空间的。
静态变量:
①:在函数体内,一个被声明为静态的变量在这一函数被调用的过程中维持其值不变。
②:在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外的其他函数访问。它是一个本地的全局变量。
③:在模块内,一个被声明为静态的函数只可被这一模块内的其他函数调用。也就是说,这个函数被限制在声明它的模块的本地范围内使用。
寄存器变量:一般情况下变量的值都是存放在内存中的。为提高程序的执行效率,允许将局部变量的值放在CPU中的寄存器中,需要用时直接从寄存器取出参加运算。现在的编译系统能够自动识别使用频繁的变量从而自动的将这些变量放在寄存器中。
外部变量:作用是扩展外部变量的作用域,也可以扩展文件的作用域。不专门的声明为静态变量,默认为外部变量。引用时使用extern声明即可。
从作用域角度分,有局部变量和全局变量。
局部变量:
①:自动变量,即动态局部变量。(离开函数,值就消失)
②:静态局部变量。(离开函数,值保留)
③:寄存器变量。(离开函数,值就消失)
(④:形参可以定义为自动变量或寄存器变量。)
全局变量:
①:静态外部变量。(只限本文件使用)
②:外部变量。(即非静态的外部变量,允许其他文件引用)
从变量的生存期分有动态存储和静态存储。
动态存储:
①:自动变量。(本函数内有效)
②:寄存器变量。(本函数内有效)
③:形式参数。(本函数内有效)
静态存储:
①:静态局部变量。(函数内有效)
②:静态外部变量。(本文件有效)
③:外部变量。(用extern声明后,其他文件可用)
从变量值的存放位置。
内存中的静态存储区:
①:静态局部变量。
②:静态外部变量。(函数外部静态变量)
③:外部变量。
内存中的动态存储区:
自动变量和形式参数 。
CPU中的寄存器:
寄存器变量。