在C语言中,变量存储类型描述有四种:
1.自动变量
2.注册变量寄存器。
3.外部外部变量
静态变量
所谓存储类型是指变量占用内存空间的方式,也称为存储方式。
变量的存储方式可以分为“静态存储”和“动态存储”两种。
1.静态存储变量通常在定义变量时就在存储单元中找到,并且直到整个程序结束都保持不变。
2.动态存储变量在程序执行过程中使用时分配存储单元,使用后立即释放。一个典型的例子是函数的形式参数。定义函数时,不会为形参分配存储空间。仅在调用函数时分配,调用函数后立即释放。
如果一个函数被多次调用,形参变量的存储单元就会被重复分配和释放。从上面的分析可以看出,静态存储变量一直存在,而动态存储变量有时存在,有时消失。
扩展信息:
变量有不同的作用域,作用域根据定义位置的不同生命周期分为6种类型:全局作用域、局部作用域、语句作用域、类作用域、命名空间作用域和文件作用域。
1.从范围角度来看:
1.全局变量只需在一个源文件中定义即可应用于所有源文件。当然,其他不包含全局变量定义的源文件必须使用extern关键字重新声明这个全局变量。
2.静态局部变量具有局部作用域。它们只初始化一次,从第一次初始化开始一直存在,直到程序结束。它们与全局变量之间的区别在于,全局变量可用于所有函数,而静态局部变量始终仅对定义它们的函数体可见。
3.局部变量也有局部作用域。它们是自动物体(汽车)。它们并不总是在程序执行过程中存在,而只在函数执行过程中存在,变量被撤销,其占用的内存也被回收。
4.静态全局变量也具有全局作用域。它们与全局变量的区别在于,如果程序包含多个文件,则作用于定义它的文件,不能作用于其他文件。也就是说,用static关键字修改的变量是文件作用域的。这样,即使两个不同的源文件定义了同名的静态全局变量,它们也是不同的变量。
2.从分配空间来看:
全局变量、静态局部变量、静态全局变量都在静态存储区分配空间,而局部变量在栈上分配空间。
全局变量本身就是静态存储方式,静态全局变量显然也是静态存储方式。两者的存储方式没有区别。两者的区别在于,非静态全局变量的作用范围是整个源程序。当源程序由多个源文件组成时,非静态全局变量在每个源文件中都有效。
静态全局变量是有作用域限制的,这意味着它们只在定义该变量的源文件中有效,不能在同一源程序的其他源文件中使用。由于静态全局变量的作用域仅限于一个源文件,并且只能被该源文件中的函数共享,因此可以避免其他源文件中的错误。
1.静态变量会被放置在程序的(全局可见的)静态数据存储区域中,以便下次调用时可以保留原来的赋值。这就是它与堆栈变量和堆变量的区别。
2.变量使static来告诉编译器它们仅在变量的范围内可见。这就是它与全局变量的区别。
参考来源:-变量-存储类型
上一篇:vmware虚拟机怎么输入中文
下一篇:变量代表了内存中的某个存储单元