笔记-C语言中static作用

C语言中,static关键词可以用来修饰变量和函数,用static关键词修饰的变量成为静态变量

static关键词的作用主要包括3个方面:

1.隐藏

一个项目中往往包括多个.c文件,所有未加static关键词前缀的全局变量和函数都具有全局可见性,通俗的说main.c中能够访问其他.c文件中的函数和变量。

如果加了static,则就会对其他源文件隐藏,那么main.c就无法访问其他.c文件中的函数和变量,在此基础之上,基于这一个特性,可以在main.c中定义同名函数和变量。

对于static修饰的函数来说,这是主要的作用。对于修饰的变量还有其他的两个作用。

2.保持变量内容持久

静态变量的储存方式和全局变量都是静态储存方式,有时候我们希望函数中的局部变量在函数调用后其变量值继续保持,这时候可以将局部变量加static关键词定义为静态局部变量,因此局部变量的位置将从栈存放变为静态储存区存放,但是静态局部变量只在声明的函数块中可用。最常用的就是用于在函数中做计数。

因此局部变量的一般使用场景为:

  • 需要保留函数上一次调用结束的值;
  • 初始化后变量只会被引用而不改变值,用静态局部变量可以避免重复赋值。

3. 默认初始化为0

静态数据区中,所有字节默认值为0x00,静态变量和全局变量都一样。

4.参考资料

  • https://www.runoob.com/w3cnote/c-static-effect.html

  • static变量及作用[ http://c.biancheng.net/view/301.html#:~:text=在 C 语言中,static 关键字不仅可以用来修饰变量,还可以用来修饰函数。. 在使用 static 关键字修饰变量时,我们称此变量为 ,%E9%9D%99%E6%80%81%E5%8F%98%E9%87%8F%20%E3%80%82.%20%E9%9D%99%E6%80%81%E5%8F%98%E9%87%8F%E7%9A%84%E5%AD%98%E5%82%A8%E6%96%B9%E5%BC%8F%E4%B8%8E%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F%E4%B8%80%E6%A0%B7%EF%BC%8C%E9%83%BD%E6%98%AF%E9%9D%99%E6%80%81%E5%AD%98%E5%82%A8%E6%96%B9%E5%BC%8F%E3%80%82.%20%E4%BD%86%E8%BF%99%E9%87%8C%E9%9C%80%E8%A6%81%E7%89%B9%E5%88%AB%E8%AF%B4%E6%98%8E%E7%9A%84%E6%98%AF%EF%BC%8C%E9%9D%99%E6%80%81%E5%8F%98%E9%87%8F%E5%B1%9E%E4%BA%8E%E9%9D%99%E6%80%81%E5%AD%98%E5%82%A8%E6%96%B9%E5%BC%8F%EF%BC%8C%E5%B1%9E%E4%BA%8E%E9%9D%99%E6%80%81%E5%AD%98%E5%82%A8%E6%96%B9%E5%BC%8F%E7%9A%84%E5%8F%98%E9%87%8F%E5%8D%B4%E4%B8%8D%E4%B8%80%E5%AE%9A%E5%B0%B1%E6%98%AF%E9%9D%99%E6%80%81%E5%8F%98%E9%87%8F%E3%80%82.%20%E4%BE%8B%E5%A6%82%EF%BC%8C%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F%E8%99%BD%E7%84%B6%E5%B1%9E%E4%BA%8E%E9%9D%99%E6%80%81%E5%AD%98%E5%82%A8%E6%96%B9%E5%BC%8F%EF%BC%8C%E4%BD%86%E5%B9%B6%E4%B8%8D%E6%98%AF%E9%9D%99%E6%80%81%E5%8F%98%E9%87%8F%EF%BC%8C%E5%AE%83%E5%BF%85%E9%A1%BB%E7%94%B1%20static%20%E5%8A%A0%E4%BB%A5%E5%AE%9A%E4%B9%89%E5%90%8E%E6%89%8D%E8%83%BD%E6%88%90%E4%B8%BA%E9%9D%99%E6%80%81%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F%E3%80%82.%20%E8%80%83%E8%99%91%E5%88%B0%E5%8F%AF%E8%83%BD%E4%BC%9A%E6%9C%89%E4%B8%8D%E5%B0%91%E8%AF%BB%E8%80%85%E5%AF%B9%E9%9D%99%E6%80%81%E5%8F%98%E9%87%8F%E4%BD%9C%E7%94%A8%E4%B8%8D%E5%A4%AA%E6%B8%85%E6%A5%9A%EF%BC%8C%E6%9C%AC%E8%8A%82%E5%B0%B1%E6%9D%A5%E8%AF%A6%E7%BB%86%E8%AE%A8%E8%AE%BA%E4%B8%80%E4%B8%8B%E5%AE%83%E7%9A%84%E4%B8%BB%E8%A6%81%E4%BD%9C%E7%94%A8%E3%80%82.]:

posted @ 2022-12-15 21:55  Phoenix-Tree  阅读(145)  评论(0)    收藏  举报