变量的分类及其介绍

xiaoxiao2021-02-28  7

本博客整理自网络,仅供学习参考,如有侵权,联系删除。邮箱:rom100@163.com

首先了解一下静态储存方式和动态储存方式。 变量的静态储存方式是指,变量在定义时就被分配储存空间,直到整个程序结束。例如:全局变量、静态局部变量。 变量的动态储存方式是指,变量只有在使用时才会被分配储存空间,使用结束后又立马释放掉。例如:函数的形参、动态局部变量。  

根据存储方式可分为静态变量和动态变量,根据作用域可分为全局变量和局部变量,所以变量可以分为4大类:静态全局变量、静态局部变量、动态全局变量、动态局部变量。其中需要注意的是,储存方式为静态储存方式的不一定是静态变量,还必须使用关键字static加以说明。比如,全局变量的储存方式都是静态的,如果不使用关键字static加以说明,那么全局变量就是动态全局变量。

这4个类别的变量中,动态全局变量和动态局部变量,就是我们通常所说的全局变量和局部变量,这里就不再赘述。  

动态全局变量与静态全局变量的区别:

1.若程序由一个源文件构成时,动态全局变量与静态全局变量没有区别。 2.若程序由多个源文件构成时,静态全局变量使得该变量成为定义该变量的源文件所独享,即:静态全局变量对组成该程序的其它源文件是无效的,也就是说其他文件不可以通过extern的方式引用。这也就解释了为啥static和extren不能同时使用的原因了。  

动态局部变量与静态局部变量的区别:

局部变量本身是储存在栈中的,只有被使用的时候才会被分配储存空间。但局部变量加上static说明后,就变成了静态局部变量。静态局部变量的特点是,变量只会被初始化一次。下面通过一个列子说明一下。

main() { int i; for(i=0;i<5;i++) fun1();//fun2(); } void fun1() //输出结果为11111 { int j; j++; printf("%d",j); } void fun2() //输出结果为12345 { static int j; j++; printf("%d",j); }

 

转载请注明原文地址: https://www.6miu.com/read-1750022.html

最新回复(0)