局部变量和全局变量的区别(全局变量和局部变量有什么区别是怎么实现的)

2025-03-23 08:00:03 0

局部变量和全局变量的区别(全局变量和局部变量有什么区别是怎么实现的)

本文目录

全局变量和局部变量有什么区别是怎么实现的

1、 全局变量的作用用这个程序块,而局部变量作用于当前函数2、前者在内存中分配在全局数据区,后者分配在栈区3、 生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁,局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在4、 使用方式不同:通过声明后全局变量程序的各个部分都可以用到,局部变量只能在局部使用操作系统和编译器通过内存分配的位置来知道的全局变量分配在全局数据段,并且在程序被运行的时候就被加载。编译器通过语法词法的分析,判断出是全局变量还是局部变量。如果是全局变量的话,编译器在将源代码翻译成二进制代码时就为全局变量分配好一个虚拟地址 (windows下0x00400000以上的地址,也就是所说的全局区),所以程序在对全局变量的操作时是对一个硬编码的地址操做。 局部变量的话,编译时不分配空间,而是以相对于ebp或esp的偏移来表示局部变量的地址,所以局部变量内存是在局部变量所在的函数被调用时才真正分配。 以汇编的角度来看:函数执行时,局部变量在栈中分配,函数调用完毕释放局部变量对应的内存,另外局部变量可以直接分配在寄存器中。 操作系统通过变量的分配地址就可以判断出是局部变量和全局变量。

全局变量和局部变量的区别请举个例子

在中出现的都是局部变量否则就是全局变量#include《iostream》usingnamespacestd;inta;intmain(){{intb;}intc;return0;}除了a,都是局部变量,作用范围是包含这个变量最小的一对括号。同名的局部变量会对全局变量产生遮盖(shadow),默认访问局部变量,除非用::指明

全局变量与局部变量的区别在哪举个例子

全局变量和局部变量的作用域不同,在函数中出现变量名同全局变量同名时以函数中的变量作为操作数,当函数返回时,函数中的变量即结束了生存期,变量值为全局变量的值。编译器是以栈结构保存信息以实现的。int i=5;main(){printf(“%d\n“,i); add() printf(“%d\n“,i);}void add(){ int i=10; printf(“%d\n“,i);}结果:5105 一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。-程序结束后有系统释放4、文字常量区—常量字符串就是放在这里的。程序结束后由系统释放5、程序代码区—存放函数体的二进制代码。 二、例子程序这是一个前辈写的,非常详细 //main.cpp inta=0;全局初始化区 char*p1;全局未初始化区 main() { intb;//栈 chars=“abc“;//栈 char*p2;//栈 char*p3=“123456“;123456\0“;//在常量区,p3在栈上。 staticintc=0;//全局(静态)初始化区 p1=(char*)malloc(10); p2=(char*)malloc(20); //分配得来得10和20字节的区域就在堆区。 strcpy(p1,“123456“);//123456\0放在常量区,编译器可能会将它与p3所指向的“123456“优化成一个地方。 }

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

一、用途不同:

全局变量:描述对象有什么(在类中定义),类中所有方法都可以使用。

局部变量:临时保存数据(在类的方法中定义),只能在当前方法中使用。

二、使用不同

全局变量=整个类中可用

局部变量=该方法内可用

三、初始值不同

全局变量=有初始值

局部变量=无初始值

扩展资料;

使用全局变量会占用更多的内存(因为其生命期长),不过在计算机配置很高的今天,这个不应该算什么问题,除非使用的是巨大对象的全局变量,能避免就一定要避免。使用全局变量程序运行时速度更快一些(因为内存不需要再分配),同样也快不了多少。

对于局部变量的名字空间污染,这个在不使用太多变量时是可以避免的。当全局变量与局部变量重名的时候,起作用的是局部变量,全局变量被屏蔽掉。

参考资料来源:百度百科-全局变量

局部变量和全局变量的区别(全局变量和局部变量有什么区别是怎么实现的)

本文编辑:admin

更多文章:


unleashed是什么意思(Compilation-Unleashed是什么意思)

unleashed是什么意思(Compilation-Unleashed是什么意思)

本文目录Compilation-Unleashed是什么意思attack是什么意思Compilation-Unleashed是什么意思Compilation:Unleashed:解除有翻译为“无防拷”我觉得应该是这个游戏原为无法复制,现在破

2025年2月16日 13:40

guaranteed是什么意思(quality guaranteed是什么意思)

guaranteed是什么意思(quality guaranteed是什么意思)

本文目录quality guaranteed是什么意思guaranteed-entry是什么意思guaranteed annual income是什么意思啊guarantee是什么意思quality guarantee是什么意思qualit

2025年2月21日 18:50

平安银行官网(平安银行积分兑换官网)

平安银行官网(平安银行积分兑换官网)

本文目录平安银行积分兑换官网怎样登录中国平安官方网站如何申请平安银行个人网上银行平安银行 登陆ip平安银行积分兑换官网平安信用卡积分商城可以兑换礼品或票券、充值话费及油卡以及使用积分+现金进行购物等,您可以登录平安口袋银行APP-信用卡-我

2025年3月14日 00:10

CSS如何让一个按钮居中应该怎么做?如何用HTML和CSS实现在网页内输入HTML代码后按按钮实现效果

CSS如何让一个按钮居中应该怎么做?如何用HTML和CSS实现在网页内输入HTML代码后按按钮实现效果

本文目录CSS如何让一个按钮居中应该怎么做如何用HTML和CSS实现在网页内输入HTML代码后按按钮实现效果CSS如何让一个按钮居中应该怎么做通过这样的Css样式就可以实现:《div style=“margin:0 auto;width:2

2025年3月23日 23:00

sly是什么牌子有什么简介吗?continuously是什么意思

sly是什么牌子有什么简介吗?continuously是什么意思

本文目录sly是什么牌子有什么简介吗continuously是什么意思sly怎么读Obviously怎么读sly一定是贬义吗sly是什么牌子有什么简介吗SLY,是英文狡黠、淘气、耍耍心眼的意思,其实寓意着“SLY”服装品牌的风格。SLY是热

2025年2月22日 23:40

buttock是什么意思(网络用语大猪蹄子是什么意思)

buttock是什么意思(网络用语大猪蹄子是什么意思)

本文目录网络用语大猪蹄子是什么意思Hip、ass、haunch、 buttock有什么区别,该怎样使用网络用语大猪蹄子是什么意思谢友邀我作答!恕美食坐家孤陋寡闻,我一直以为,大猪蹄子的意思就是大猪的蹄子这个意思。可就在今天,就在刚才,我一铁

2025年3月8日 13:10

glamorous什么意思(glmorous是什么意思)

glamorous什么意思(glmorous是什么意思)

本文目录glmorous是什么意思glam是什么意思glmorous是什么意思应该是glamorous sky吧!魅惑天空/迷人天空中岛美嘉受邀担任人气漫画“NANA”改编的同名电影女主角“大崎NANA”一角,也凭电影“NANA”的歌曲 G

2025年3月23日 01:10

carrot cake(请指点下Carrot cake的家常做法)

carrot cake(请指点下Carrot cake的家常做法)

本文目录请指点下Carrot cake的家常做法请指点下Carrot cake应该怎么做请指点下Carrot cake的家常做法食材:胡萝卜300克、核桃250克、蛋黄4个.、红糖200克、肉桂粉1 茶勺、淡朗姆酒30毫升、低粉60克、泡打

2025年2月19日 21:20

kubernetes(kubernetes工作方向 有前途吗)

kubernetes(kubernetes工作方向 有前途吗)

本文目录kubernetes工作方向 有前途吗kubernetes 什么意思Kubernetes为什么很重要如何学习kubernetes,学习kubernetes需要代码基础吗kubernetes工作方向 有前途吗Kubernetes在容器

2025年3月6日 11:30

ignored xml validation warning(Eclipse打开xml文件报校验错误怎么解决)

ignored xml validation warning(Eclipse打开xml文件报校验错误怎么解决)

本文目录Eclipse打开xml文件报校验错误怎么解决myeclipse 打开后 spring配置文件applicationcontext.xml第一行有红叉叉,把鼠标放到红叉上,提示加载这个java web项目,修改浏览器访问地址tomc

2025年3月19日 18:50

cured是什么意思(网络热词cure)

cured是什么意思(网络热词cure)

本文目录网络热词curecure的用法和意思是什么及例句网络热词curecure 英An operation finally cured his shin injury手术最终治好了他胫部的伤。第三人称单数:cures 复数:cure

2025年3月9日 03:50

avenue怎么读(法语avenue为什么读e)

avenue怎么读(法语avenue为什么读e)

本文目录法语avenue为什么读eavenue怎么念法语avenue为什么读e第一个不是很明白~我是用法语学的法语~对于这些中文名字不太理解.第二个 avenue 和 pied 2个词也有读音规则啊.数字8~~为了好听所以会发音~法语中也有

2025年4月5日 07:20

redis可视化管理工具(redis可视化管理工具好不好)

redis可视化管理工具(redis可视化管理工具好不好)

本文目录redis可视化管理工具好不好memcached 有没有什么可视化的管理工具redis可视化管理工具好不好有序集合类型在某些方面和列表类型有些相似。(1)二者都是有序的。(2)二者都可以获得某一范围的元素。但是二者有着很大的区别,这

2025年3月25日 02:50

泛型是什么意思(啥叫泛型具体怎么用谁能给个详细点的答复)

泛型是什么意思(啥叫泛型具体怎么用谁能给个详细点的答复)

本文目录啥叫泛型具体怎么用谁能给个详细点的答复什么叫泛型什么是泛型(C#概念)泛型是什么什么是泛型他有什么优点什么叫泛型有什么作用什么是泛型说的直白点什么是泛型啥叫泛型具体怎么用谁能给个详细点的答复英文是Generic,意思是通用的,你知道

2025年4月1日 17:30

html背景图片居中(用html添加背景图片时,怎么让它不重复并且居中)

html背景图片居中(用html添加背景图片时,怎么让它不重复并且居中)

本文目录用html添加背景图片时,怎么让它不重复并且居中怎么用HTML把图片设置在背景图片居中求代码用html添加背景图片时.怎么让它不重复.并且居中.在网页设计中怎么让背景图片水平居中用html添加背景图片时,怎么让它不重复并且居中在你所

2025年2月23日 23:00

查看僵尸进程(linux系统中top查看进程,进程还在运行,但是Pid找不到对应执行的文件,是不是这个进程是个死进程)

查看僵尸进程(linux系统中top查看进程,进程还在运行,但是Pid找不到对应执行的文件,是不是这个进程是个死进程)

本文目录linux系统中top查看进程,进程还在运行,但是Pid找不到对应执行的文件,是不是这个进程是个死进程如何察看僵尸进程 zombie怎样用top命令查看所有进程unix怎么看一个进程是不是僵死的如何用linux组合指令查找某个进程并

2025年3月23日 22:00

免费制作h5页面的软件(比如易企秀、凡科这个两个都是免 费的h5工具吗哪个好用)

免费制作h5页面的软件(比如易企秀、凡科这个两个都是免 费的h5工具吗哪个好用)

本文目录比如易企秀、凡科这个两个都是免 费的h5工具吗哪个好用h5页面都是用什么软件制作的比如易企秀、凡科这个两个都是免 费的h5工具吗哪个好用在制作H5之前要明确自己要建什么类型的页面再选择合适的工具,常用的H5类型如下:一、手机游戏类型

2025年2月27日 18:00

everybody中文谐音字(Everybody Dies In Their Nightmares的中文谐音那位大佬能翻译出来)

everybody中文谐音字(Everybody Dies In Their Nightmares的中文谐音那位大佬能翻译出来)

本文目录Everybody Dies In Their Nightmares的中文谐音那位大佬能翻译出来麻烦把这段英语翻译“汉语谐音”Everybody Dies In Their Nightmares的中文谐音那位大佬能翻译出来Every

2025年2月8日 17:40

windows phone系统还能用吗(windows phone系统现在怎么样)

windows phone系统还能用吗(windows phone系统现在怎么样)

本文目录windows phone系统现在怎么样Windows phone系统的手机好用吗Windows Phone 还能咸鱼翻身吗Windows Phone10和Windows10区别手机版不能用微信电脑版可以用微信windowsphon

2025年3月16日 13:30

cl exe(c语言中执行cl.exe时出错)

cl exe(c语言中执行cl.exe时出错)

本文目录c语言中执行cl.exe时出错VC2010中出现“error MSB6006: “CL.exe”已退出,代码为 2”如何解决c语言初学者求救!执行 cl.exe 时出错.是什么意思C语言程序编译老是CL.exe错误 怎么回事为什么老

2025年2月28日 17:00

近期文章

journal of alloys and compounds(Journal of Alloys and Compounds投稿求助)
2025-04-05 08:40:02
本站热文

harbor,port,pier的区别?谁能解释“harbour“(港口)与“pier“(码头)的区别
2025-02-22 17:40:03 浏览:18
ibatis foreach(ibatis 批量update操作)
2025-02-10 23:40:06 浏览:7
endless rain(endless rain表达什么情感)
2025-02-14 06:00:02 浏览:6
标签列表

热门搜索