详解——C语⾔中Static关键字
⽬录:static的基本含义
static⽤法
static原理
⼀、static关键字的基本含义
⾸先,static关键字的意思是静态的,⽤于修饰局部变量,全局变量和函数,修改其数据储存类型
1.局部变量:在任意⼀个函数内部定义的变量(不加static),初始值不确定,出函数⾃动销毁,存放于栈区。使⽤static修饰这个变量时,编译器会把她初始化为零,存储于静态区,函数返回时值保持不变,出函数不销毁,下⼀次进⼊函数依然存在。根本原因——static修饰的局部变量存储在静态区。
2.全局变量:普通全局变量定义在函数体外部,在静态区分配存储空间,编译器⾃动对其初始化。普通全局变量对整个⼯程可见,其他⽂件使⽤关键字extern外部声明后可以直接使⽤。静态全局变量仅对当前⽂件可见,其他⽂件不可访问,其他⽂件可以定义与其同名的变量,两者互不影响。在定义不需要与其他⽂件共享的全局变量时,加上static关键字能够有效地降低程序模块之间的耦合,避免不同⽂件同名变量的冲突,且不会误使⽤。
3.函数:在函数的返回类型前加上static,就是静态函数。例如:static int main() 静态函数只能在声明它的⽂件可见,其他⽂件不能引⽤该函数。不同⽂件可以使⽤相同名字静态函数⾮静态函数可以在另⼀个⽂件直接引⽤。
⼆、static关键字的⽤法
1.当使⽤普通局部变量时,如图,int a是⼀个局部变量,每次出函数后⾃动销毁,所以打印出"6666666666";
当使⽤静态局部变量时,如图。static修饰的局部变量除了局部范围后不会销毁,下⼀次进⼊函数依然存在。
2.如图,static声名的函数不能被另⼀个⽂件引⽤
三、static关键字的原理
因为static修饰的局部变量是存储在静态区的,static修饰全局变量时,实际改变的是变量的存储位置。局部变量放在栈区的,被static修饰后放在了静态区。从⽽导致除了作⽤域依然存在,⽣命周期并没有结束
明解c语言
如图为存储区⽰意图
感谢观看
——————

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。