static关键字:静态局部变量,静态全局变量与静态函数详解
static关键字
- 1.static修饰局部变量:静态局部变量
- 2.static修饰全局变量:静态全局变量
- 3.static修饰函数:静态函数
1.static修饰局部变量:静态局部变量
概念: static修饰局部变量就使之成为静态局部变量
初始化: 静态局部变量的初始化只会在第一次进入这个函数时做,当离开函数的时候,静态局部变量会继续存在并保持其值,以后进入函数时会保持上次离开时的值。
作用域: 静态局部变量的作用域并未发生变化,在其所在的局部范围,也就是其所定义的代码块内部。
生存期: 静态局部变量实际上是特殊的全局变量,它们位于相同的内存区域,内存分为栈区,堆区,静态存储区,静态局部变量和全局变量都位于静态存储区,因此静态局部变量的生存期与全局变量一样,随程序启动而生,随程序结束而消亡。
由此可见,static修饰局部变量只是改变了变量的生命周期,让静态局部变量出了作用域依然存在,随程序启动而生,随程序结束而消亡。
2.static修饰全局变量:静态全局变量
全局变量的作用域是整个工程,也就是说全局变量可以在整个项目中的任意的一个源文件被使用,这是因为全局变量具有外部连接属性,当一个全局变量被static所修饰的时候,这个全局变量的外部连接属性就变成了内部连接属性,即成为了静态全局变量,使得这个静态全局变量只能在自己所在的编译单元中被使用,而不能被其它编译单元所使用,否则会出现连接性错误。
3.static修饰函数:静态函数
函数也是具有外部连接属性的,当某个编译单元需要使用其他编译单元中的函数,只需要声明该函数,然后就可以使用,当一个函数被static所修饰的时候,这个函数的外部连接属性就变成了内部连接属性,也就成为了静态函数,使得这个静态函数只能在自己所在的编译单元中被使用,而不能被其它编译单元所使用,否则会出现连接性错误。
static关键字:静态局部变量,静态全局变量与静态函数详解相关推荐
- C|C++中的静态全局变量,静态局部变量,全局变量,局部变量的区别
static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 面向过程设计中的static 全 ...
- 静态局部变量和全局变量的区别!
静态局部变量和全局变量的区别! C++变量根据定义位置的不同,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名作用域和文件作用域. 1.从作用域看: (1)全局变 ...
- python定义静态变量_对Pyhon实现静态变量全局变量的方法详解
python不能像C++一样直接定义一个static变量或者通过extern来导入别的库的变量而实现数据共享,但是python的思想是通过模块化来解决这个问题,就是通过模块来实现全局变量. 首先新建一 ...
- java 静态对象赋值_基于Java class对象说明、Java 静态变量声明和赋值说明(详解)...
先看下JDK中的说明: java.lang.Object java.lang.Class Instances of the class Class represent classes and inte ...
- VB静态调用与动态调用dll详解
[[请注意]]:在以下语法格式中,请注意 [函数名] 的[大小写]!!! 静态与动态比较: 静态调用简单,动态调用麻烦:静态调用占用资源多,动态调用占用资源少:正所谓鱼和熊掌不可兼得. 静态调用定义: ...
- linux mysql 静态库_Linux静态库与动态库实例详解
Linux静态库与动态库实例详解 1. Linux 下静态链接库编译与使用 首先编写如下代码: // main.c #include "test.h" int main(){ te ...
- php self this static,PHP 中 self、static、$this 的区别和后期静态绑定详解
本篇文章给大家分享的内容是关于PHP 中 self.static.$this 的区别和后期静态绑定详解,有着一定的参考价值,有需要的朋友可以参考一下 self.static 和 $this 的区别 为 ...
- c语言中全局变量多线程调用-局部变量、静态局部变量、全局变量与静态全局变量分析
基本概念: 作用域:起作用的区域,也就是可以工作的范围. 代码块:所谓代码块,就是用{}括起来的一段代码. 数据段:数据段存的是数,像全局变量就是存在数据段的 代码段:存的是程序代码,一般是只读的. ...
- 局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别(转)...
我们先来看内存中的几大区: 内存到底分几个区? 下面有几种网上的理解,我整理一下: 一: 1.栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构 ...
最新文章
- AGG第十一课 agg::ellipse 渲染椭圆和多边形
- raid5坏了一块盘怎么办_服务器阵列信息丢失,数据怎么办?先不要慌,也许很快就能恢复...
- leetcode60.第k个排列java题解
- 转载:程序员从初级到中级10个秘诀
- Docker 下载 JDK 镜像(docker search 、docker pull)
- 计算机程序的建立命令,数控车床编程指令 编程由一系列的指令组成
- c语言delay_单片机模拟流星雨,电路图和程序,一起来感受下,其实C语言不难...
- 最小生成树之克鲁斯卡尔(kruskal)算法详解代码实现
- 脑电波技术新突破:读心准确率达到95%
- linux之realpath命令
- codeblock图形界面编程(十)文件操作
- 小程序随笔(关于香港手机号无法接收短信)
- linux中zip文件能转换tar,linux 怎么把rar转换成zip 或者 tar
- IE、FF、Safari、OP不同浏览器兼容报告
- 【Java学习笔记1】Java概述 -背景+环境搭建
- FAT32 学习及注意事项
- 35BYJ46步进电机
- blgo ? 博客 !
- 最近淘宝联盟出cpc广告,如何通过审核呢?
- 数据结构包括哪几种基本结构,各有什么特点
热门文章
- 软文发布的十大渠道!
- 课后作业:情境三:程序结构与数组 1、分支
- cpu设计----1.3 cpu架构
- 基于改进的k最近邻算法的单体型重建问题An Improved KNN Algorithm for Haplotype Reconstruction Problem
- 人脸识别除了可以破案,还能制造冤案...
- web项目的三层结构: 视图层,业务逻辑层,持久层
- 激光SLAM算法 -1:激光SLAM简介
- 用hexo免费搭建个人博客(详细的完整教程)
- STM32F407ZGT6点灯
- ruby on rails 中使用boot strap(先存起来,还没试过)