前言
第一篇博客,记录点滴,记录成长。
提示:以下是本篇文章正文内容,下面内容可供参考
一、static关键字作用
1.修饰的对象
包括:局部变量、全局变量、函数
2.变化
生存周期和作用域
3.修饰局部变量
普通的局部变量会随着函数的结束而结束,每次函数重新执行都是新的值不会保留上次的值。使用static修饰后,局部变量的生存周期只有当程序结束才会结束,并且再次调用函数时会保留上一次的值。
总结:用static修饰的局部变量改变了生存周期,但是没有改变其作用域,改变其生存周期的原因是被static修饰的局部变量被存放在.bas段或者.data段,而普通的局部变量是存放在栈上的。
4.修饰全局变量
使用static修饰的全局变量改变了作用域,没有改变生存周期。普通的全局变量是可以被其他的.c文件引用的,一旦被static修饰就只能在定义该全局变量的.c文件引用,全局变量的作用范围减小。
作用:当一个全局变量不想被其他.c文件引用时,可以使用static修饰,这样其他的文件就不能通过extern的方式去访问,这样做主要是为了数据安全。
5.修饰函数
使用static修饰函数,改变了作用域。普通的函数可以通过头文件声明的方式被其他文件调用,被static修饰后就只能在本文件中被调用,这样做也是为了数据安全。
总结
使用static修饰的全局变量和函数,除了上面说的数据安全,防止误引用外,还有一个作用是解决重命名问题。一般来说,不是要对外提供的函数和全局变量,最好用static修饰。