搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
IT小白
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
重磅!兰大,牵手华中大!
2
知识图谱可视化vue.js + d3.js_前端知识图谱可视化
3
HackRF One硬件架构及参数简介_hackrf one元器件位置图
4
适用于异构芯片(CPU,ASIC,DSP,FPGA,GPU/GPGPU)的软件并行技术_由 dsp 与 fpga 向 gpu 升级阶
5
程序员上了年纪可以做啥?_程序员年龄分布
6
mysql主从,高可用复制原理(I)_mysql主从复制高可用
7
虚拟机中已有Ubuntu再安装CentOS(安装过程详细到每一步!!)_ubuntu安装linux centos7 64
8
每天不知道吃什么?食谱生成AI工具,帮你实现食谱自由
9
25个网络安全等级保护相关文件、指南、要求等(文末附PDF)!_guidelines for network virtualization security:pdf
10
最全神经网络基础知识讲解
当前位置:
article
> 正文
局部静态变量和全局静态变量
作者:IT小白 | 2024-04-22 18:20:34
赞
踩
局部静态变量和全局静态变量
静态变量的类型说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。对于自动变量,它属于动态存储方式。 但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。
由此看来, 一个变量可由static进行再说明,并改变其原有的存储方式。
1. 静态局部变量
在局部变量的说明前再加上static说明符就构成静态局部变量。
例如:
static int a,b;
static float array[5]={1,2,3,4,5};
静态局部变量属于静态存储方式,它具有以下特点:
(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。
(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后,尽管该变量还继续存在,但不能使用它。
(3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋以0值。
(4)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的 值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的 副作用,因此仍以采用局部静态变量为宜
2.静态全局变量
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中 都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错 误。从以上分析可以看出,
把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。因此 static 这个说明符在不同的地方所起的作用是不同的。应予以注意。
静态变量
除范围之外,变量还有存活期,在这一期间变量能够保持它们的值。在应用程序的存活期内一直保持模块级变量和公用变量的值。但是,对于 Dim 声明的局部变量以及声明局部变量的过程,仅当过程在执行时这些局部变量才存在。通常,当一个过程执行完毕,它的局部变量的值就已经不存在,而且变量所占据 的内存也被释放。当下一次执行该过程时,它的所有局部变量将重新初始化。
但可将局部变量定义成静态的,从而保留变量的值。在过程内部用 Static 关键字声明一个或多个变量,其用法和 Dim 语句完全一样:
Static Depth
例如,下面的函数将存储在静态变量 Accumulate 中的以前的运营总值与一个新值相加,以计算运营总值。
Function RunningTotal (num)
Static ApplesSold
ApplesSold = ApplesSold + num
RunningTotal = ApplesSold
End Function局部变量、全局变量、静态变量
如果用 Dim 而不用 Static 声明 ApplesSold,则以前的累计值不会通过调用函数保留下来,函数只会简单地返回调用它的那个相同值。
在模块的声明段声明 ApplesSold,并使它成为模块级变量,由此也会收到同样效果。但是,这种方法一旦改变变量的范围,过程就不再对变量排他性存取。由于其它过程也可以访问和改变变量的值,所以运营总值也许不可靠,代码将更难于维护。
声明所有的局部变量为静态变量
为了使过程中所有的局部变量为静态变量,可在过程头的起始处加上 Static 关键字。例如:
Static Function RunningTotal (num)
这就使过程中的所有局部变量都变为静态,无论它们是用 Static、Dim 或 Private 声明的还是隐式声明的。可以将 Static 放在任何 Sub 或 Funtion 过程头的前面,包括事件过程和声明为 Private 的过程。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/IT小白/article/detail/469862
推荐阅读
article
软件测试
工具
之
测试
用例
管理
工具
比较_
用例
管理
工具
的优缺点...
工具
名综述优点缺点备注TestManagerRational测试解决方案中推荐的
测试
用例
管理
工具
。1. 功能强大。2. ...
赞
踩
article
常见
的
SQL
笔试题和面试题(上):经典50题_已知
学生
表
student
(
sno
sname
sage
...
https://zhuanlan.zhihu.com/p/38354000常见
的
SQL
笔试题和面试题(上):经典50题已...
赞
踩
article
ruoyi
学习
_若依
雪花
算法
id
...
ruoyi
使用总结_若依
雪花
算法
id
若依
雪花
算法
id
1、可选择...
赞
踩
article
PHP
+Mysql—
学生
信息
管理
系统(前端+后端+THINK
PHP
框架)_
php
学生
管理
mysq...
一、功能前台功能:1、学校介绍、全部
学生
查看、
学生
按照班级分类查看2、
学生
注册、
学生
登录、退出登录3、前台
学生
个人信息修...
赞
踩
article
软件
测试
中
的
测试
工具
和
自动化
测试
_
测试
工具
及
自动化
测试
的
介绍...
测试
工具
也分为不同人员使用
的
开发人员:
测试
框架,编写
测试
用例;各类线上dump分析工具如windgb;开发时
的
集成IDE...
赞
踩
article
【免费题库】
华为
OD机试 - 第
k
个
排列
(
Java
& JS &
Python
& C &
C++
)...
## 题目描述给定参数n,从1到n会有n
个
整数:1,2,3,…,n,这n
个
数字共有n!种
排列
。按大小顺序升序列出所有
排列
...
赞
踩
article
安装
git
后
打开
VSCode
提示找
不到
git
,需要在
git
.
path
中配置路径。_
vscode
找...
安装
git
后,
打开
vscode
提示找
不到
git
需要配置
git
.
path
路径_
vscode
找
不到
git
vscode
找...
赞
踩
article
蓝桥
杯
嵌入式
1
4届4T
模拟题
1
_
4t
蓝桥
杯...
(4)串口收到其他非法字符时(除字符‘
1
’到字符‘9’外的其他字符均为非法字符),返回固定字符串‘error’,串口未收...
赞
踩
article
pycharm
同步
代码到
gitlab
_
pychorm
同步
gitlab
...
pycharm
右上角有个√,点击commit,如果代码有改变,则改变的部分会显示出来,勾上,继续提交,merge_pyc...
赞
踩
article
【
深度
学习
】
Transformer
长大了,它
的
兄弟姐妹
们呢?
(
含
Transformer
s超细节知识点...
最近复旦放出了一篇各种
Transformer
的
变体
的
综述
(
重心放在对
Transformer
结构
(
模块级别和架构级别)改良...
赞
踩
article
Pytorch从零开始
实现
Transformer
(
from
scratch
)_用
pytorch
实现
...
对最基础的
Transformer
进行简介并从头开始
实现
Transformer
(Code the
Transformer
...
赞
踩
article
主键
策略之
雪花
算法
详解
_
雪花
主键
...
前言
雪花
算法
大家多多少少肯定都有听说过,并且大家肯定都知道它能提供一个全局的唯一ID,但是更详细的内容大家肯定也没有了解...
赞
踩
article
MATLAB
R2023b
for
Mac
(数值计算和科学编程软件)_
matlab2023b
mac
...
总的来说,
MATLAB
R2023b
for
Mac
提供了更多的功能和改进,使用户能够更轻松地进行数值计算、数据分析和科...
赞
踩
article
大
数据
技术8:
StarRocks
极速全
场景
MPP
数据
库
_
starrocks
数据
库
...
StarRocks
是一款高性能分析型
数据
仓库,使用向量化、
MPP
架构、CBO、智能物化视图、可实时更新的列式存储引擎...
赞
踩
article
Git
安装
和
使用
(非常详细教程)...
对于
Git
的
使用
本文就不讲那么深了,今天主要是
和
大家分享一下
Git
的
安装
和
使用
一些简单方面的认识,希望初学
Git
的大家看...
赞
踩
article
基于
PHP
学籍
管理系统
设计
与实现...
基于
PHP
学籍
管理系统
设计
与实现项目采用MVC模式开发,前端使用bootstrapUI库开发,代码都带注释可以二次修改开...
赞
踩
article
网络
链路层
之(2)
PPP
协议
_
ppp
协议
工作
状态...
ppp
是一个
协议
集合,包含三部分:将IP数据报封装到串行链路的方法。一系列的链路控制
协议
(Link Control Pr...
赞
踩
article
2024年
软件
测试
工具
大全(
自动化
、
接口
、性能、安全、
测试
管理)_2024年主流
软件
测试
工具
...
根据 Tricentis 主导的一项全球调查为我们提供了几个有关
测试
趋势的重要观察。趋势表明,团队倾向于使用功能
测试
(自...
赞
踩
article
Linux
用户
获得超级管理员
权限
_
linux
用户
获得
权限
...
问题描述在创建了新的虚拟机和
用户
后,
用户
可能还没有超级管理员的操作
权限
:[peng@localhost network-...
赞
踩
article
程序员
的
自我
评价
_
程序员
自我
评价
简短...
篇一:
程序员
简历
自我
评价
程序员
简历
自我
评价
本人勤奋踏实,工作认真负责,自学能力强;性格开朗,容易与人相处,注重团队协作精...
赞
踩
相关标签
工具
测试
软件测试
excel
测试工具
web
学习
php
mysql
开发语言
华为od
java
javascript
git
github
vscode
蓝桥杯
单片机
stm32
嵌入式硬件
机器学习
人工智能
深度学习
python