网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
在定义变量前加上static关键字成为静态变量之后,这该变量的生存周期就会更变,直到整个程序运行结束之后,该静态变量才会销毁.
生存周期: 变量从定义到销毁的时间范围。存放在全局数据区的变量的生存周期存在于整个程序运行期间,而存放在栈中的数据则随着函数等的作用域结束导致出栈而销毁,除了静态变量之外的局部变量都存放于栈中。
static变量是指静态的变量,不管是在全局还是局部声明的static变量都存放于程序的全局变量区域,所以它的生命周期是从程序开始到程序结束。但是static变量的作用域并不等同于它的生存周期,它的作用域决定于它被定义的位置。
举一个例子:
void test()
{
int m=3;
static int i=5;
}
在test函数运行完之后,变量m就会进行销毁,但变量i不会被销毁,会直到整段程序运行结束,变量i才会被销毁.否则会一直存有数值,但该数值也仅仅在被定义区间有效!
2.全局中的静态变量
在全局定义一个静态变量是想只在该文件程序中使用该变量,与其他文件程序不共享此变量.
举个例子:
在文件A中
int n=3; //默认为extern
static int j=5; //声明为static
全局变量和静态变量j都存放于程序的全局数据区域,它们的生存周期都是程序的整个运行期,但是n的作用域为全局作用域,可以通过extern在其他文件中使用,而j只能在文件A中使用
在文件B中:
extern int n; // allow
extern int j; //error: j在文件B中不可见
![img](https://img-blog.csdnimg.cn/img_convert/f79a94aa94b90ac2210c91e89ca389e4.png)
![img](https://img-blog.csdnimg.cn/img_convert/0e90a8bee345ea76440c130272090a5f.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**