变量的分类及其介绍

首先了解一下静态储存方式和动态储存方式。

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

根据存储方式可分为静态变量和动态变量,根据作用域可分为全局变量和局部变量,所以变量可以分为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);
}

本博客整理自网络,仅供学习参考,如有侵权,联系删除。邮箱:[email protected]

猜你喜欢

转载自blog.csdn.net/leho666/article/details/80535481
今日推荐