一、全局变量、局部变量、静态全局变量、静态局部变量(声明在函数体的static变量)的区别:
1、存储位置:只有局部变量存在栈里,且初始化为随机值,其它三种变量存在静态存储区,初始化为0.
2、作用域:静态全局变量只初始化一次,只在本文件有效,防止被其它文件使用;全局变量可以通过extern关键字在其它文件使用;
局部变量和局部静态变量都在函数内有效,但局部变量返回时就失效,而局部静态变量仍会保留。
3、静态函数意味该函数只能在该文件下使用,也叫内部函数。
二、为什么要用静态变量
1、使用静态全局变量原因:只初始化一次,不用担心和其它文件变量名重合(也是使用静态函数的原因)。
2、使用静态局部变量原因:局部变量在函数返回时就失效了,为了:保持函数两次调用之间的变量值,而且使该变量只属于该函数(这意味着不适用全局变量,毕竟全局变量不属于函数自己)。就使用局部静态变量。
三、静态成员和静态成员函数(java常用):变量或函数是类的一部分,但不是类的各个对象的一部分。这种情况下static声明的变量只有一个副本,不像普通变量在每个对象里都有一个副本。类的静态函数只能访问静态成员(变量或者函数)。