全局变量和局部变量在内存中是否有区别?如果有,是什么区别?_全局变量和局部变量在内存中是否有区别?如果有,是什么区别?-程序员宅基地

技术标签: c语言  局部变量  全局变量  面试题  

答:有区别。
全局变量保存在内存的全局存储区,占用静态的存储单元;局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。

引申:
C语言经过编译之后将内存分为以下五个区域
1.栈:由编译器进行管理,自动分配和释放,存放函数调用过程中的各种参数,局部变量,返回值及函数返回地址。操作方式类似数据结构中的栈。
2.堆:用于程序动态申请分配和释放空间。C语言中的malloc和free,C++中的new和delete均是在堆中进行的。正常情况下,程序员申请的空间在使用结束后应该释放,若程序员没有释放空间,则程序结束时系统自动回收。注意,这里的”堆”并不是数据结构中”堆”。
3.全局(静态)存储区:分为DATA段和BSS段。DATA段(全局初始化区)存放初始化的全局变量和静态变量;BSS段(全局未初始化区)存放未初始化的全局变量和静态变量。程序运行结束时自动释放。其中,BSS段在程序执行之前会被系统自动清零,所以未初始化全局变量和静态变量在程序执行之前已经为0。
4.文字常量区:存放常量字符串。程序结束后由系统释放。
5.程序代码区:存放程序的二进制代码。
显然,C语言中的全局变量和局部变量在内存中是有区别的。C语言中的全局变量包括外部变量和静态变量,均是保存在全局存储区中,占用永久性的存储单元;局部变量即自动变量,保存在栈中,只有在所在函数被调用时才由系统动态在栈中分配临时性的存储单元。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36194037/article/details/78871097

智能推荐

排序算法效率比较(Java实训)_java实训的算法-程序员宅基地

文章浏览阅读564次。排序算法效率比较(Java实训)实训目的:数组、Java API的应用实训要求:随机生成10000个10000以内的实数,分别用选择、冒泡、快速排序等算法进行排序,计算各种排序所需时间并比较算法的效率。bubbleSort.javapackage program4;//冒泡排序public class bubbleSort { public void bubbleSort..._java实训的算法

angularjs表单注册--两次密码验证_angularts 重复密码验证-程序员宅基地

文章浏览阅读3k次,点赞2次,收藏2次。html _angularts 重复密码验证

使用@RequestMapping+@Pathvariable获取url中携带的参数-程序员宅基地

文章浏览阅读10w+次。以下面的代码为例import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import top.huas...

抢单软件开发原理_软件开发原理-程序员宅基地

文章浏览阅读5.1k次。抢单软件开发原理Rubbish software is produced when we try to do everything at once. 当我们尝试一次做所有事情时,就会产生垃圾软件。 Principles, guidelines, best practices, and rules of thumb — they all make your life easier. Without..._抢单软件 博客园

tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory-程序员宅基地

文章浏览阅读1.4k次。在配置日志文件的时候slf4j和logback的时候报错,版本问题:Caused by: java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory at org.slf4j.LoggerFac..._tried to access field

随便推点

八大行业Hadoop大数据应用回顾和展望_基于hadoop的房源数据研究与分析-程序员宅基地

文章浏览阅读842次。第一个现象是大数据技术优先应用在采用SQL进行结构化数据处理上,来解决数据量增大带来的处理能力的挑战;这与很多人宣传的大数据技术最适合处理非结构化数据(而不适合结构化数据处理)相反。我们发现企业面临两方面的挑战,一方面是累积的数据量越来越大,从GB增长到了TB(拥有PB级的企业客户也有,但是少数),另一方面,随着应用的增多和复杂化,计算能力越来越不能满足要求。大多数企业多年来根据业务需求在传统的关..._基于hadoop的房源数据研究与分析

立创eda导出封装到allegro_立创EDA教程视频2018-程序员宅基地

文章浏览阅读2k次。本课程将立创EDA的使用从头到尾进行了讲解,希望可以在最短的时间让大家有一个初步的认识,在完成课程后,你将可以独立完成进行原理图和PCB设计。客户端下载地址: 软件下载立创EDA是一款基于浏览器的,友好易用的,免费强大的EDA(Electronics Design Automation: 电子设计自动化)工具。致力于中小原理图、电路图绘制,仿真,PCB设计与提供制造便利性。强大的电路设计功能原理图..._立创eda封装库转cadence16.6

VC程序Release程序崩溃后问题根源查找-程序员宅基地

文章浏览阅读370次。文章1:http://hi.baidu.com/0x9000/item/7b355010f4be8c413a176e81如何去做崩溃后的定位是一个有效的方法。1. 可以先利用连接器的配置,产生 map 文件:在 VC Project Setting 对话框中打开 Generate mapfile,然后在Project Options对话框中键入“/mapinfo:lines /mapi...

搜索框-程序员宅基地

文章浏览阅读192次。鼠标点击搜索输入框,搜索框左侧拉伸73个像素1) Add HTML<!--使用Bootstrap字体图标--><link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIF...

postgresql的配置文件中找不到postgresql.conf和pg_hba.conf_没有postgresql.conf-程序员宅基地

文章浏览阅读3.2k次,点赞2次,收藏2次。前言:这两天给我们的服务器上面装了一个postgresql10.3-2,配置远程连接的时候发现找不到postgresql.conf和pg_hba.conf两个文件,反而有postgresql.conf.sample和pg_hba.conf.sample两个文件,这可就见了鬼了,最气人的是配置这两个文件发现不管用,还是不能远程连接,下面我们来看下详细信息。我们先来看下10.3-2..._没有postgresql.conf

小白闲谈——兴趣是从什么时候开始的......-程序员宅基地

文章浏览阅读853次。人的财富不能一直增加。忘了几岁的时候就爱鼓捣bb机,从小到大,每当我拿到一样电子设备,首先就是打开它的设置界面,探索这个电子设备的神秘之处,看看怎样找到它的开发者模式,然后再查看它的所有功能,避免自己没有物尽其用。2005年,偷拿妈妈的翻盖手机玩兔子吃萝卜的游戏,跳出一个咖啡的图标来,兴奋地通过一关后再把手机合上。等到短信过来提示扣除10元话费,看着妈妈奇怪是谁盗用了她的话费,就是怀疑不到我头上来…那时候会偷偷窃喜,觉得这个咖啡图标就是个好玩的秘密。2007年,全校风靡数码宠物,每个人都激动地守着自己

推荐文章

热门文章

相关标签