问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

static静态局部变量和静态全局变量的区别详解

发布网友 发布时间:2022-04-30 03:58

我来回答

1个回答

热心网友 时间:2023-10-10 19:39

一、静态局部变量:
1、static类型的内部变量同auto自动变量(即未加 static 声明的局部变量)一样,是某个特定函数的局部变量,即只能在定义该变量的函数内使用该变量,两者作用域相同;两者的不同在于:auto自动变量会随着函数被调用和退出而存在和消失,而static类局部变量不会,它不管其所在的函数是否被调用,都将一直存在;不过,尽管该变量还继续存在,但不能使用它。倘若再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值。换言之,static类型的内部变量是一种只能在某个特定函数中使用,但一直占据存储空间的变量。
2、函数体内如果在定义静态变量的同时进行了初始化,则以后程序不再进行初始化操作(出现在函数内部的基本类型的的静态变量初始化语句只有在第一次调用才执行)。而对自动变量赋初值是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。
3、静态局部变量的初始化表达式必须是一个常量或者常量表达式。即使局部静态变量定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变量);静态变量的初始值为0。而对自动变量auto来说,如果不赋初值则它的值将是个不确定的值。
4、当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用(主要是变量的作用域造问题成的),因此仍以采用局部静态变量为宜。
注:局部静态变量占用内存时间较长,并且可读性差,因此,除非必要,尽量避免使用局部静态变量。
二、静态全局变量
全局变量(外部变量)的声明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。
static静态局部变量和静态全局变量区别
这两者的区别在于:
1、非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。
2、静态全局变量则*了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。
从以上分析可以看出————
把局部变量改变为静态变量后是改变了它的存储方式,即改变了它的生存期。
把全局变量改变为静态变量后是改变了它的作用域,*了它的使用范围。static静态变量会被放在程序的全局存储区中(即在程序的全局数据区,而不是在堆栈中分配,所以不会导致堆栈溢出),这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。
静态变量和局部变量和全局变量的区别

1>全局变量,静态局部变量,静态全局变量都在静态存储区分配空间,而局部变量在栈里分配空间 2>全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量...

静态ip - StormProxies

"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP纯净高匿;2、覆盖全球200+的国家与地区,超7000万住宅IP。3、高可靠性,24小时稳定运行,平均99.99%的可用率;4、性价比更高,便宜好用,单个IP也能享受最优价格,没有额外费用;5、易于使用,支持HTTP/HTTPS/SOCKS5协议,提供多种API参数,网络集成更快捷;6、客服全天在线为您排忧解难,并可根据您的业务需求制定更合适的代理…StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP纯净高匿;2、覆盖全球20...

static局部变量和全局变量的区别

局部变量:每次进入进入子函数中重新赋值 static:静态变量,开始定义时赋值,以后进入子函数时之前在此函数中计算的值重新赋值该变量 ,static变量和全局变量是不一样,static变量只能在你定义那个子函数中有效。

static局部变量和全局变量的区别

全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文 件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作 用域, 即只在定义该变量的...

C语言静态局部变量和全局变量有什么区别,不都是在整个程序中都有效吗...

按作用域分:全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量...

全局变量,静态全局变量,静态局部变量和局部变量的区别1

按作用域分,全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全...

全局变量 与 static型的局部变量 有什么区别

第一种:static局部变量 在函数体内定义int i;和static int i;的区别 首先他两都只在定义该变量的函数中有效 第一个属于非静态局部变量,他是从栈内存分配空间,其特点是从执行该函数开始,为i分配栈内存,函数结束运行后,i所分配的内存会被系统自动回收(即这个处理后的i值就此消失),所以他的...

C#静态全局变量和静态局部变量有什么区别?

生命周期和作用域不一样,全局变量拥有全局生命周期,也就是说这段程序不管什么地方都可以引用;局部变量的话只有在定义的那段代码或者类或者方法内引用,一旦这个方法或者类运行结束,那么这个变量就销毁了

静态局部变量和普通全局变量以及静态全局变量的区别

1 生命周期不同 2 分配时间不同 3 分配位置不同。而另外三个,在这几项上是相同的,之间的区别在于作用域。全局变量,作用域为整个项目,不管在哪个文件中,只要声明后都可以使用。静态全局变量,作用域为定义改变量的所在文件。而静态局部变量,作用域与普通局部变量一样,都是定义位置到所在大括号...

C++中static的几种含义:static局部变量,static全局变量,类中的 stati...

看起来和用起来像是局部变量,但实际上他的性质跟其他的静态变量是一样的,也就是说在内存中只有一个副本,不会像局部变量那样函数调用完毕就释放。与其他静态变量不同的是他的可见性只保持在声明它的函数体内,但可以设置访问函数提供给外部使用。static全局变量。这种用法继承自C语言,表示这个全局变量...

静态局部变量和普通全局变量以及静态全局变量的区别

静态局部变量和普通全局变量以及静态全集变量在编译时,编译器会自动给他们分配地址。而且是从MCU上电运行开始,一直驻留,不会被回收的。而真正的区别在于他们的作用域。静态局部变量的作用域是在于定义它的那个函数内。由于其在编译时编译器就给他们分配了地址,并且做了初始化,所以它只能被初始化一次,...

static变量和全局变量的区别 静态全局变量和静态局部变量 static局部变量和全局变量 c语言局部变量和全局变量 auto变量和static变量 外部变量和全局变量 静态变量与全局变量 全局变量一定是静态变量 全局变量都是静态变量吗
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
狗狗为什么会得胰腺炎症呢 鸡蛋去壳后用了点蛋清做面膜,然后把剩下的拿碗放冰箱里,第2天还可以煮... ...月3 日上午十一点二十分男孩姓李改名李柏涛好吗? 前列腺小囊肿是否严重 前列腺囊肿治疗费用 海信电视有哪些型号 老年痴呆的三个阶段 案件移交到检察院后的流程是怎样的 合肥新站拆迁纠纷律师哪个排名高? 炸鸡粉(炸鸡粉怎么用才能使鸡肉更好吃) 关于静态局部变量 BON VOYAGE什么意思 局部变量,静态全局变量,静态局部变量的区别和联系 bonvoyagl是什么意思 静态局部变量和普通局部变量有什么区别 局部变量的储存类别是什么变量,静态局部变量和寄存器变量 静态全局变量,静态局部变量和局部变量的区别 C语言中的静态局部变量 25分之9-括号1/2+50分之23= 五十分之二十七减五十分之二十三,,,把得数约成最简分数 制作环保酵素肥用工业红糖吗? 23+多少小于50? 23分之26+50分之23同分后分数等于多少? 小红有100个球其中其中红球占全部的92/100他的说法正确吗为什么? 不通分,怎样比较63/125和23/50的大小? 我国西部探明的矿种约有115种,占全国的23/50,其中在广西发现的矿种占全国的18/25广西发现的矿种有多少种 2/9-2/9×23/50怎么减算? 烟台到日照,有高铁吗,坐高铁要多长时间?坐汽车又要多长时间?希望 烟台到日照多少公里? 7/10 7/30 6/100 1/8/ 5/4 23/50 化成百分数。 什么是四进社区 静态局部变量又和静态全局变量又有何区别 静态局部变量属于局部变量吗 c语言程序问题 akb成员之间有没有亲戚关系 头风贯眼是什么意思? 关于静态局部变量?! 静态局部变量和局部变量有何不同啊 C++中 昭馀,这两个字怎么解释 C语言用静态局部变量来实现 写出李逵,鲁达,林冲,武松的几个故事? 四进社区活动是指什么啊? 高适的诗 带解释 武松打虎 山东四进工作是什么意思 带伞和影字的古诗,谢谢 谁有描写秋天的诗? MX250显卡相当于桌面什么显卡? 国航波音744编号B2472执飞那条航线? 中国国际航空飞机编号是B-2447的这架飞机是飞往哪里的? 谁能告诉我客机的货舱在什么位置?