-
静态变量与动态变量
2018-08-02 20:21:10静态变量,全局动态变量都是静态存储 2)动态存储变量是在程序执行过程中,使用它时才分配存储单元,使用完毕立即释放 3)静态存储变量是一直存在的,而动态存储变量则时而存在时而消失。通常把由于变量存储方式...0.静态存储与动态存储
1)静态存储变量通常是在变量定义时就分定存储单元并一直保持不变,直至整个程序结束。静态变量,全局动态变量都是静态存储
2)动态存储变量是在程序执行过程中,使用它时才分配存储单元,使用完毕立即释放
3)静态存储变量是一直存在的,而动态存储变量则时而存在时而消失。通常把由于变量存储方式不同而产生的特性称为变量的生存期
4)静态存储只会初始化一次
摘自于:百度百科
1.区别
定义或者声明变量时,没有static修饰符的就是动态变量,有static修饰符的就是静态变量
2.动态变量(一下简称变量)
2.1全局变量
1)在所有函数的外部定义(包括主函数),定义之后的所有函数都能使用,属于静态存储
2)作用域为整个项目,即最终编译成可执行文件的所有文件中均可以使用动态全局变量。外部文件可以通过extern关键字来声明另一个文件中存在的全局变量
3)生命周期为从程序运行到程序退出,即贯穿整个运行时间
4)无显式初始化时默认初始化值为0
看一个有关全局变量多文件的例子:
main.cpp
#include <iostream> using namespace std; int var_a = 0; void fun1(); void fun2(); void fun0() { var_a = var_a + 1; cout << "fun1:" << var_a << endl; } int main() { fun0(); fun1(); fun2(); fun0(); system("pause"); return 0; }
variable1.cpp
#include <iostream> using namespace std; extern int var_a; void fun1() { var_a = var_a + 1; cout << "fun3:" << var_a << endl; }
variable2.cpp
#include <iostream> using namespace std; extern int var_a; void fun2() { var_a = var_a + 1; cout << "fun3:" << var_a << endl; }
运行结果:
可以发现,全局变量var_a在所有文件中都共享,每个文件都可以访问它并修改它的值
2.2局部变量
1)在函数内部定义,属于动态存储,其他函数不能访问,外部文件也不能访问,否则会出现:
2)作用域为当前函数,从定义位置,到其所在的{}的结束位置
3)生命周期为从函数调用到函数退出
4)无显式初始化时默认初始化值为随机值
3.静态变量
3.1静态全局变量
1)作用域为当前文件,从定义/声明位置到文件结尾
2)生命周期为从程序运行到程序退出,即贯穿整个运行时间
3)无显式初始化时默认初始化值为0
静态全局变量与动态全局变量的主要不同:
动态全局变量可以通过extern关键字在外部文件中使用,但静态全局变量不可以在外部文件中使用。静态全局变量相当于限制了动态全局变量的作用域
看一个例子:
#include <iostream> using namespace std; static int b = 10; void fun() { int b = 0; cout << "b = " << b << endl; b++; } int main() { for (int i = 0; i < 5; i++) fun(); system("pause"); return 0; }
得到结果:
为什么得到5个0呢,为什么不是0,1,2,3,4呢
这是因为在函数fun中定义了一个动态局部变量a,而a同时又是静态全局变量,在这种情况下,作用域小的掩盖作用域大的,所以局部变量会掩盖全局变量。所以动态局部变量a掩盖了静态全局变量a
3.2静态局部变量
1)作用域为当前函数,从定义位置,到其所在的{}的结束位置
2)生命周期为从程序运行到程序退出,即贯穿整个运行时间,当下次函数调用时,静态局部变量不会被再次初始化,而是沿用上次函数退出时的值
静态局部变量与动态局部变量的主要不同:
两者作用域相同,都在函数内部,但是两者生命周期不一样,静态局部变量的生命周期是到程序的结束,而动态局部变量的生命周期是函数的结束,静态局部变量的生命周期更长,同时静态局部变量只会初始化一次,函数重复调用,但静态局部变量不会被重新初始化
看一段代码:
#include <iostream> using namespace std; void fun() { int a = 0; static int b = 0; cout << "a = " << a << endl; cout << "b = " << b << endl; a++; b++; } int main() { for (int i = 0; i < 5; i++) fun(); system("pause"); return 0; }
执行结果:
得到这样的结果也是自然的
参考来源:
-
静态变量、动态变量、内部变量(局部变量)、外部变量(全局变量)
2019-11-26 17:53:17区分静态变量、动态变量、内部变量(局部变量)、外部变量(全局变量)静态变量、动态变量、内部变量(局部变量)、外部变量(全局变量)变量的分类来看 静态变量、动态变量、内部变量(局部变量)、外部变量(全局...区分静态变量、动态变量、内部变量(局部变量)、外部变量(全局变量)
静态变量、动态变量、内部变量(局部变量)、外部变量(全局变量)
文章参考:https://blog.csdn.net/21aspnet/article/details/2560072
文章参考:https://blog.csdn.net/u013921430/article/details/79279114变量的分类来看
变量分类
- 作用域分类
局部变量(默认是自动局部变量)
1. 定义:在一个函数内部定义的变量(包括函数形参)
2. 有效范围:一直在本函数有效
3. 变量存储:栈内存,函数结束之后自动销毁
4. 静态局部变量:存储在静态存储区,作用域依旧在函数体内部。每次对其修改都会被保存下来。
** 全局变量 **
1. 定义:在函数外部定义的变量,可为本源文件中其他函数使用
2. 有效范围:从定义变量的位置开始到本源文件的结束
3. 变量存储:存储在静态存储区域(静态内存)
4. 可被工程项目其他文件的 extern 声明之后调用,对其每次修改都会进行保存
5. 静态全局变量:不能被其他源文件使用,只能本源文件使用,并且每次修改会被保存 - 生存周期分类
静态存储方式——程序运行期间分配固定的存储空间的方式
动态存储方式——程序运行期间根据需要进行的动态分配空间的方式
又可分为
1. auto(自动)——默认,数据存储在动态存储
2. static(静态)——函数在调用结束之后会保存本次调用的数值
3. register(寄存器)——在声明动态局部变量或者函数形参时,可将变量声明为register,这样编译系统就会为变量分配一个寄存器而不是内存空间,通过这种方式可提升对某些局部变量频繁调用的程序的性能。(寄存器运算速度远高于内存)
4. extern (外部)——扩展全局变量的作用域
- 作用域分类
-
动态变量和静态变量的区别
2015-10-03 10:13:01动态变量和静态变量的区别:1、存储位置动态变量:存储在内存出栈数据区静态变量:存储在全局数据区(静态数据区)2、生命期动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数范围变量将...动态变量和静态变量的区别:
1、存储位置
动态变量:存储在内存出栈数据区
静态变量:存储在全局数据区(静态数据区)
2、生命期
动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数范围变量将失效
静态变量:程序结束时才释放
3、作用域
动态变量:同样的要根据你定义的位置才能确定,和第二点的一样
静态变量:当前文件中有效
-
postman中的变量(环境变量、全局变量、动态变量、数据变量之间区别)
2018-08-05 18:30:09环境变量 postman可以设置多套环境,每套环境里可以有多个环境变量。 环境变量是特定的环境下引用的变量,必须要制定对应的环境才能引用到其中的变量。 ...Postman也有一些动态变量,可以用...环境变量
postman可以设置多套环境,每套环境里可以有多个环境变量。
环境变量是特定的环境下引用的变量,必须要制定对应的环境才能引用到其中的变量。
全局变量
postman只可以设置一组全局变量,作用于整个postman。
全局变量是在postman中所有的api都使用的变量,可以直接引用全局变量中的变量,而不用指定环境;
动态变量
Postman也有一些动态变量,可以用在你的request中。在request header中包含时间戳或者在URL参数中发送一个随机字符串,时间戳和随机字符都属于动态变量。
注意:动态变量在pre-request script中设置,但不可以用于SandBox中,你只能在request的URL、headers、body中以放在双花括号中间的形式使用。
数据变量
集合运行器让我们导入CSV或JSON文件,然后在HTTP请求和脚本中使用来自数据文件的值。这些变量称为数据变量。
数据变量使用之前要在pre-request script中定义过。eg:var name=data.name
变量优先级
数据变量(在collection中使用数据驱动前提下)>环境变量>全局变量
-
静态变量与动态变量的定义与区别
2019-01-23 13:14:33动态变量和静态变量的定义和区别如下: 1.定义上,静态变量比动态变量在多一个关键字static,比如: 动态变量::int i; 静态变量:static int i; 2.动态变量在子程序中,每次调用都会从它的初始值开始调用,而... -
静态变量和动态变量 全局和局部
2019-03-24 18:25:37静态变量,全局动态变量都是静态存储 2)动态存储变量是在程序执行过程中,使用它时才分配存储单元,使用完毕立即释放 3)静态存储变量是一直存在的,而动态存储变量则时而存在时而消失。通常把由于变量存储方式... -
C语言动态变量和静态变量的区别
2017-11-27 20:21:00而动态变量,形式为TYPE var_name = init_value;即没有static 修饰。其中的=init_value均可省略。区分定义在函数外的全局变量,和函数内的局部变量,作用域,生命周期,及无显式初始化时的初始值,均有区别。1 动态... -
【C语言】-- 动态变量和静态变量的区别
2020-08-14 07:51:36每次调用该函数的时,系统会给它分配存储空间,该函数调用结束释放其存储空间,即动态变量每次被调用都会被赋初值。 静态变量:全局变量都是静态变量,函数中的局部变量加static关键字修饰也是静态变量。多次调用该... -
shell 动态变量名
2019-07-02 09:19:38shell 中的动态变量名 avr_0= avr_1= avr_2= avr_3= avr_4= avr_5= avr_6= avr_7= # 赋值 avr_x = for i in $(seq 0 7) do eval avr_${i}=${i} done # 取值 for i in $(seq 0 7) do tmp=$(eval echo '$'avr_${i})... -
C语言 动态变量和静态变量的区别
2018-11-07 22:23:24转 C语言动态变量和静态变量的区别 2017年11月27日 20:21:00 guosir_ 阅读数:1586 &amp;amp;amp;amp;amp;amp;amp;lt;span class=&... -
POSTMAN动态变量设置
2017-09-11 15:40:29POSTMAN在与TEAM共享接口信息时由于地址参数不一致造成了诸多不便,以下便是POSTMAN动态变量的一些基本使用方法。 一、手动设置变量 1.选择右上角Manage Environments 2.点击添加 3.填写名称,写入对应key与... -
python for循环根据变量生成动态变量
2019-06-26 13:53:31#!/usr/bin/python # -*- coding: UTF-8 -*- for a,s in zip([1,2,3,4,5],["a","b","c","d","e... locals()["qq"+str(a)] = (s+"ww") #生成动态变量 "qq"+str(a) print locals()["qq"+str(a)] 其中locals()["q... -
php 局部动态变量与局部静态态变量 与全局变量
2018-10-22 01:03:16//局部动态变量 function testa(){ $a=3; $a++; echo "$a","<br/>"; } testa(); testa(); //局部静态变量 function testb(){ //不存的话就声明 并赋值为3 //存在的... -
clojure 词法变量lexical和动态变量dynamic
2014-09-04 14:54:51clojure中变量可以分为词法变量(lexical)和动态变量(dynamic),有点类似于其它语言中的局部变量和全局变量。 -
关于动态变量的指针变化问题
2015-04-26 07:27:53通过测试,我发现在新建一个动态变量后,指向一个动态变量的指针可以去指向另一个变量,那么之前的那个动态变量怎么delete呢? -
静态变量static/动态变量auto
2015-04-17 17:20:51静态变量static/动态变量auto的区别: 1.静态变量: #include #include long Func(int n); int main() { int i,n; printf("Input n:"); scanf("%d",&n); for(i=1;i;i++) { printf("%d! = %ld\n",i,Func -
Python 动态变量名定义与调用方法
2020-02-25 09:59:44这篇文章主要介绍了Python 动态变量名定义与调用方法,需要的朋友可以参考下 动态变量名赋值 在使用 tkinter 时需要动态生成变量,如动态生成 var1…var10 变量。 使用 exec 动态赋值 exec 在 python3 中是内置函数,... -
动态变量和静态变量的区别(存储位置、生命周期、作用域)
2019-01-23 13:21:06动态变量和静态变量的区别: 1、存储位置 动态变量:存储在内存出栈数据区 静态变量:存储在全局数据区(静态数据区) 2、生命期 动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数... -
Python 动态变量
2012-06-04 08:46:12在Python中使用动态变量,请使用 globals(), locals() 以及 vars() ,尽量避免使用 eval来获取变量名 例如 test = 1 vars1 = locals()['test'] vars2 = vars()['test'] print vars1, vars2 相关风险可以参考... -
Python动态变量名定义与调用
2019-04-30 21:15:24动态变量名赋值 在使用tkinter时需要动态生成变量,如动态生成var1...var10变量 使用exec动态赋值 exec在python3中是内置函数,它支持python代码的动态执行。 示例: 利用命名空间动态赋值 在Python的命名... -
python里生成动态变量和如何使用动态变量
2019-04-09 23:57:11在给公式赋值时,碰到了一个问题,sympy需要先定义好符号的变量。而符号的变量在写作函数时是不清楚的,如下图: x, y = symbols('x y') expr = (x + y)*2*y+y**2 x和y均为符号变量,是由变长参数值确定的。有... -
exec实现python动态变量命名
2019-08-09 16:48:10今天在研究gpu多卡并行的过程中需要把一个大矩阵给拆成8块,为了实现动态变量命名查了几个资料。exec是我认为最好用的。用法如下: 假设需要设置8个变量,名字分别为fuck_0到fuck_7, def func(x, i): return x + i ... -
使用BeanShell设置JMeter动态变量
2017-02-07 19:37:59在某些情况下,我们测试的url是动态的,如http://abc.com/index?param=dynpara,其中dynpara, 其中dynpara表示动态变量,该动态变量是通过某个特定算法实现的。为了实现这样的需求,需要使用 beanshell测试步骤如下:... -
动态变量和静态变量的区别,堆和栈的区别
2015-01-12 16:20:15动态变量和静态变量的区别: 1、存储位置 动态变量:存储在内存出栈数据区 静态变量:存储在全局数据区(静态数据区) 2、生命期 动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数... -
关于Python、R、VBA、SAS的生成批量变量名与动态变量引用的问题
2019-01-03 21:42:241. 什么是动态变量? i=1 x&i=3 x&i就是动态变量。 如果x&i按照我们所想的一样,那么上述程序的结果应该是得到了一个变量x1=3 上述程序在VBA中可直接实现。 动态变量可以用于批量变量迭代,这是...
-
基于LPC2294处理器的嵌入式PLC的设计
-
内部管理系统Spring boot/Spring MVC/Mybati
-
基于多子网复合复杂网络的模型研究
-
Metabase从入门到精通视频教程
-
一种支持隐私保护的加密方法在云存储中的应用
-
基于白光通信实现音频无线传输的设计与研究
-
港口集装箱运输管理系统研究与设计
-
2021-1小时Django和Mysql数据库操作入门教程(新手入门)
-
01-2.8LCD显示屏C51_SPI例程.rar
-
Appium自动化测试套餐
-
人工智能:深度学习入门到精通实战
-
将二维码应用于证书防伪的系统构建与研究
-
面向语音与面部表情信号的情感可视化方法
-
Qt项目实战之基于Redis的网络聊天室
-
Python数据科学
-
网络爬虫学习1 - 使用 requests.get(url) 抓取网页
-
仿真钢琴-javascript实战
-
卸载office.zip
-
基于嵌入式技术的毛巾剑杆织机控制系统设计
-
Java 11核心技术简明视频教程