static关键字

  • 1.static修饰局部变量:静态局部变量
  • 2.static修饰全局变量:静态全局变量
  • 3.static修饰函数:静态函数

1.static修饰局部变量:静态局部变量

概念: static修饰局部变量就使之成为静态局部变量

初始化: 静态局部变量的初始化只会在第一次进入这个函数时做,当离开函数的时候,静态局部变量会继续存在并保持其值,以后进入函数时会保持上次离开时的值。

作用域: 静态局部变量的作用域并未发生变化,在其所在的局部范围,也就是其所定义的代码块内部。

生存期: 静态局部变量实际上是特殊的全局变量,它们位于相同的内存区域,内存分为栈区,堆区,静态存储区,静态局部变量和全局变量都位于静态存储区,因此静态局部变量的生存期与全局变量一样,随程序启动而生,随程序结束而消亡。

由此可见,static修饰局部变量只是改变了变量的生命周期,让静态局部变量出了作用域依然存在,随程序启动而生,随程序结束而消亡。

2.static修饰全局变量:静态全局变量

全局变量的作用域是整个工程,也就是说全局变量可以在整个项目中的任意的一个源文件被使用,这是因为全局变量具有外部连接属性,当一个全局变量被static所修饰的时候,这个全局变量的外部连接属性就变成了内部连接属性,即成为了静态全局变量,使得这个静态全局变量只能在自己所在的编译单元中被使用,而不能被其它编译单元所使用,否则会出现连接性错误。

3.static修饰函数:静态函数

函数也是具有外部连接属性的,当某个编译单元需要使用其他编译单元中的函数,只需要声明该函数,然后就可以使用,当一个函数被static所修饰的时候,这个函数的外部连接属性就变成了内部连接属性,也就成为了静态函数,使得这个静态函数只能在自己所在的编译单元中被使用,而不能被其它编译单元所使用,否则会出现连接性错误。

static关键字:静态局部变量,静态全局变量与静态函数详解相关推荐

  1. C|C++中的静态全局变量,静态局部变量,全局变量,局部变量的区别

    static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 面向过程设计中的static 全 ...

  2. 静态局部变量和全局变量的区别!

    静态局部变量和全局变量的区别! C++变量根据定义位置的不同,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名作用域和文件作用域. 1.从作用域看: (1)全局变 ...

  3. python定义静态变量_对Pyhon实现静态变量全局变量的方法详解

    python不能像C++一样直接定义一个static变量或者通过extern来导入别的库的变量而实现数据共享,但是python的思想是通过模块化来解决这个问题,就是通过模块来实现全局变量. 首先新建一 ...

  4. java 静态对象赋值_基于Java class对象说明、Java 静态变量声明和赋值说明(详解)...

    先看下JDK中的说明: java.lang.Object java.lang.Class Instances of the class Class represent classes and inte ...

  5. VB静态调用与动态调用dll详解

    [[请注意]]:在以下语法格式中,请注意 [函数名] 的[大小写]!!! 静态与动态比较: 静态调用简单,动态调用麻烦:静态调用占用资源多,动态调用占用资源少:正所谓鱼和熊掌不可兼得. 静态调用定义: ...

  6. linux mysql 静态库_Linux静态库与动态库实例详解

    Linux静态库与动态库实例详解 1. Linux 下静态链接库编译与使用 首先编写如下代码: // main.c #include "test.h" int main(){ te ...

  7. php self this static,PHP 中 self、static、$this 的区别和后期静态绑定详解

    本篇文章给大家分享的内容是关于PHP 中 self.static.$this 的区别和后期静态绑定详解,有着一定的参考价值,有需要的朋友可以参考一下 self.static 和 $this 的区别 为 ...

  8. c语言中全局变量多线程调用-局部变量、静态局部变量、全局变量与静态全局变量分析

    基本概念: 作用域:起作用的区域,也就是可以工作的范围. 代码块:所谓代码块,就是用{}括起来的一段代码. 数据段:数据段存的是数,像全局变量就是存在数据段的 代码段:存的是程序代码,一般是只读的. ...

  9. 局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别(转)...

    我们先来看内存中的几大区:  内存到底分几个区? 下面有几种网上的理解,我整理一下: 一: 1.栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构 ...

最新文章

  1. AGG第十一课 agg::ellipse 渲染椭圆和多边形
  2. raid5坏了一块盘怎么办_服务器阵列信息丢失,数据怎么办?先不要慌,也许很快就能恢复...
  3. leetcode60.第k个排列java题解
  4. 转载:程序员从初级到中级10个秘诀
  5. Docker 下载 JDK 镜像(docker search 、docker pull)
  6. 计算机程序的建立命令,数控车床编程指令 编程由一系列的指令组成
  7. c语言delay_单片机模拟流星雨,电路图和程序,一起来感受下,其实C语言不难...
  8. 最小生成树之克鲁斯卡尔(kruskal)算法详解代码实现
  9. 脑电波技术新突破:读心准确率达到95%
  10. linux之realpath命令
  11. codeblock图形界面编程(十)文件操作
  12. 小程序随笔(关于香港手机号无法接收短信)
  13. linux中zip文件能转换tar,linux 怎么把rar转换成zip 或者 tar
  14. IE、FF、Safari、OP不同浏览器兼容报告
  15. 【Java学习笔记1】Java概述 -背景+环境搭建
  16. FAT32 学习及注意事项
  17. 35BYJ46步进电机
  18. blgo ? 博客 !
  19. 最近淘宝联盟出cpc广告,如何通过审核呢?
  20. 数据结构包括哪几种基本结构,各有什么特点

热门文章

  1. 软文发布的十大渠道!
  2. 课后作业:情境三:程序结构与数组 1、分支
  3. cpu设计----1.3 cpu架构
  4. 基于改进的k最近邻算法的单体型重建问题An Improved KNN Algorithm for Haplotype Reconstruction Problem
  5. 人脸识别除了可以破案,还能制造冤案...
  6. web项目的三层结构: 视图层,业务逻辑层,持久层
  7. 激光SLAM算法 -1:激光SLAM简介
  8. 用hexo免费搭建个人博客(详细的完整教程)
  9. STM32F407ZGT6点灯
  10. ruby on rails 中使用boot strap(先存起来,还没试过)