今天突然想起前阵子面试的时候一道笔试题,问关于static和extern关键字,得空测试了下,整理下,写在这里记录,就不往印象笔记里弄了。
static:静态关键字,修饰变量、函数;保存在静态区。
static修饰局部变量和全局变量有不同的表现和注意事项
1.static修饰局部变量,该变量只初始化一次,保存在静态区,其作用域不会改变,但其内存一直在,直到整个程序运行结束。
2.static修饰全局变量的时候,该变量的作用域仅在该文件内,外部不可以访问。
extern:引用外部变量或者函数(多用于C函数);可以引用其他类的全局变量及修改该变量
如果不想被外部访问的话一定要注意加上static关键字。
小结:static变量 既不在堆区也不在栈区,是单独的一个系统分配的静态区,这部分的变量不参与引用计数;合理利用局部静态变量;对于定义全局变量要注意外部权限控制;
参考:https://www.cnblogs.com/cqb-learner/p/5709048.html
网友评论