对于这个关键字我一直没有弄清楚,今天特地去花了一定的时间去理解这个关键字。在函数或变量声明时,在数据类型前加上 static 后会有以下几个效果

  一、用于函数定义时:

    1、函数的链接属性会被修改,从extrenal 变为internal

    2、函数的存储类型与作用域不受影响

  二、用于变量声明时:

    1、将变量的存储类型从自动变成静态

    2、链接属性和作用域不受影响

    3、生命周期将被延续到整个程序结束

  三、最重要的一点:

    无论是函数还是变量,一但被冠上static 那么他们只能在被声明的文件中访问!

针对2.3我特别举个栗子:  

 #include <stdio.h>

 int fun(void);

 int main(void)
{
……
fun();
……
return ;
} int fun()
{
static int a;
……
}

  这里如果 fun 中的 int a 没有限定符static那么当fun结束后 a 就会被回收,作用域从17行开始到函数结束。但现在就不同了,变量a的声明周期从原本的函数内变成了整个程序,程序开始运行就有了变量a了,到程序结束变量a才会被回收。

  但是,但是,但是其作用作用域仍然变不变!

切记,无论是函数还是变量,static一定不会改变作用域,但一定会改变链接域!

最新文章

  1. 纯CCS绘制三角形箭头图案
  2. angularjs自带过滤器
  3. mysql用户权限设置
  4. CI框架源码阅读笔记3 全局函数Common.php
  5. js ==与===区别(两个等号与三个等号)
  6. 在Vista或更高版本Windows系统中, 获取超大图标的办法
  7. WinForm 中两个窗口之间传递数据
  8. android开发环境重装系统之后的配置
  9. Spring HTTP invoker 入门
  10. sql server 2008 学习笔记
  11. web微信开发前期准备最新详细流程
  12. C#打印九九乘法表
  13. IScroll某些手机下不触发ScrollEnd问题处理
  14. 虚拟机设置固定ip可以使shell远程连接到服务器
  15. fdisk磁盘分区与挂载
  16. vue实现购物车和地址选配(二)
  17. setfacl语法2
  18. C# 各类常见Exception 异常信息
  19. BG.VM--CentOS
  20. Android 获取系统默认输入法

热门文章

  1. 各种STL的基本用法
  2. CentOS7编译安装httpd-2.4.41
  3. HTML 5 &lt;em&gt; &lt;strong&gt; &lt;dfn&gt; &lt;code&gt; &lt;samp&gt; &lt;kbd&gt; &lt;var&gt; &lt;cite&gt; 标签
  4. redhat 7.6 ssh 服务配置
  5. 「BOI2007」Mokia
  6. 思科 ASA 系列防火墙 官方文档下载指南
  7. LeetCode 349,350 数组的交集
  8. GoJS组织结构图2
  9. AJAX的表单请求POST请求方式
  10. 机器学习、深度学习中的信息熵、相对熵(KL散度)、交叉熵、条件熵