static关键字作用

文章目录

  • 前言
  • 一、static关键字作用
    • 1.修饰的对象
    • 2.变化
    • 3.修饰局部变量
    • 4.修饰全局变量
    • 5.修饰函数
  • 总结


前言

第一篇博客,记录点滴,记录成长。


提示:以下是本篇文章正文内容,下面内容可供参考

一、static关键字作用

1.修饰的对象

包括:局部变量、全局变量、函数

2.变化

生存周期和作用域


3.修饰局部变量

普通的局部变量会随着函数的结束而结束,每次函数重新执行都是新的值不会保留上次的值。使用static修饰后,局部变量的生存周期只有当程序结束才会结束,并且再次调用函数时会保留上一次的值。
总结:用static修饰的局部变量改变了生存周期,但是没有改变其作用域,改变其生存周期的原因是被static修饰的局部变量被存放在.bas段或者.data段,而普通的局部变量是存放在栈上的。

4.修饰全局变量

使用static修饰的全局变量改变了作用域,没有改变生存周期。普通的全局变量是可以被其他的.c文件引用的,一旦被static修饰就只能在定义该全局变量的.c文件引用,全局变量的作用范围减小。
作用:当一个全局变量不想被其他.c文件引用时,可以使用static修饰,这样其他的文件就不能通过extern的方式去访问,这样做主要是为了数据安全。

5.修饰函数

使用static修饰函数,改变了作用域。普通的函数可以通过头文件声明的方式被其他文件调用,被static修饰后就只能在本文件中被调用,这样做也是为了数据安全。

总结

使用static修饰的全局变量和函数,除了上面说的数据安全,防止误引用外,还有一个作用是解决重命名问题。一般来说,不是要对外提供的函数和全局变量,最好用static修饰。

你可能感兴趣的:(C,C++,c语言,学习,开发语言)