动态存储方式与静态存储方式

从变量的作用域(即从空间)的角度来观察,变量可以分为全局变量和局部变量。从变量值存在的时间(即生存期)来观察,有的变量在程序运行的整个过程都是存在的,而有的变量则是在调用其所在的丽数时才临时分配存储单元,而在函数调用结束后该存储单元就马上释放了,变量不存在了。

变量的存储有两种不同的方式:静态存储方式和动态存储方式。静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式,而动态存储方式则是在程序运行期间根据需要进行动态的分配存储空间的方式。

内存中的供用户使用的存储空间可以分为三个部分:

(1)程序区;

(2)静态存储区;

(3)动态存储区。

数据分别存放在静态存储区和动态存储区中。

全局变量全部存放在静态存储区中,在程序开始执行时给全局变量分配存储区,程序执行完毕就释放。在程序执行过程中它们占据固定的存储单元,而不是动态地进行分配和释放。


在动态存储区中存放以下数据:

(1)函数形式参数。在调用函数时给形参分配存储空间。

(2)函数中定义的没有用关键字static声明的变量,即自动变量。

(3)函数调用时的现场保护和返回地址等。

对以上这些数据,在函数调用开始时分配动态存储空间,函数结束时释放这些空间。在程序执行过程中,这种分配和释放是动态的。

局部变量的存储类别

1.自动变量(auto变量)

函数中的局部变量,如果不专门声明为static(静态)存储类别,都是动态地分配存储空

间的,数据存储在动态存储区中。函数中的形参和在函数中定义的局部变量(包括在复合语

句中定义的局部变量),都属于此类。在调用该函数时,系统会给这些变量分配存储空间,在

函数调用结束时就自动释放这些存储空间。因此这类局部变量称为自动变量。自动变量用

关键字auto作存储类别的声明。

2.静态局部变量(static局部变量)

有时希望函数中的局部变量的值在函数调用结束后不消失而继续保留原值。即其的存储单元不释放,在下一次再调用该函数时,该变量已有值(就是上一次的数调用结束时的值)。这时就应该指定该局部变量为“静态局部变量”,用关键字static进行声明。

局部静态变量使用举例:

 # include int main(){int f(int);int a=2,i;for(i=0;i<3;i++)printf(" %d" ,f(a));return 0;}int f(int a){ autoint b=0;static c=3;b=b+1;c=c+1;return(a+ b+c); }

输出结果:

789

数据存储设备

小结

1.自动变量关键字auto可以省略,不写auto,则隐含指定为自动存储类别。

2.C语言的存储类别包括:自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。

关注我即可更快获得更多精彩知识,欢迎大家关注、评论、转发、点赞;一起进步,共同交流~

c语言局部变量存在什么区_C语言程序设计变量运用指南 C语言局部变量的存储方式和生存期...相关推荐

  1. C语言变量的存储方式和生存期

    一.动态存储方式与静态存储方式 从变量的作用域进行区分,变量可分为全局变量和局部变量. 从变量的生存期进行区分,变量可分为静态存储方式和动态存储方式. 静态存储方式:在程序运行期间由系统分配固定的存储 ...

  2. c语言编程知识分享uc头条,资深程序员分享的C语言编程中的一些误用及知识总结...

    我们是不是在写程序的时候错误很多,就算编译通过了也达不到我们预期的结果.之后自己还找不到错在哪儿.我觉得语言之所以能称之为语言,首先它肯定是一种工具.一种相互交流.相互通信.相互传达之间意图的工具.作 ...

  3. c语言可以编制出功能复杂的程序,2018级《C语言程序设计》复习题及答案(5页)-原创力文档...

    2014 C 2014 C 级< 语言程序设计>复习题及答案 级< 语言程序设计>复习题及答案 一.单项选择题 一.单项选择题 1 C (B ) 1.以下不是 C 语言的特点的 ...

  4. C语言字符串哪个头文件,如果在程序中要使用C语言的字符串处理函数,应在程序中包含这哪个头文件。...

    程程下列不是K均值聚类的缺点的是() 神--申--电,序中序中这三个字是从一个词分化出来的."神"写作"申",也就是"电",是让人恐怖,让人 ...

  5. python语言为何不受待见_程序员为什么讨厌这些语言

    全球著名的 IT 网站 Stack Overflow 根据数百万开发者项目标签的使用频率,发布了一份编程语言的调查报告,试图找出最不受欢迎的编程语言.没想到开发者最想规避的编程语言中,PHP.Obje ...

  6. C语言之局部变量全局变量变量存储方式

    备注:1.文章中的例子暂时为空,日后希望自己能自己编写例子赋贴上来. 一.角度分析: 变量作用域 -------> 局部变量和全局变量 变量存在的生存期 ---------> 静态存储方式 ...

  7. 【C语言进阶深度学习记录】三十五 程序中的堆、栈以及静态存储区(数据区)

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 在我之前学习底层的知识的时候,也写过相关的内容.可以对比的学习:[软 ...

  8. c语言除法在全局区,深入C语言内存区域分配(进程的各个段)详解

    C语言可执行代码结构 名称 内容 代码段 可执行代码.字符串常量 数据段 已初始化全局变量.已初始化全局静态变量.局部静态变量.常量数据 BSS段 未初始化全局变量,未初始化全局静态变量 栈 局部变量 ...

  9. C语言函数(函数嵌套、递归调用)+局部变量和全局变量+extern关键字的使用+Visual Studio简单的使用教程+数据存储类别+内部函数外部函数

    上一篇文章:编译预处理知识点梳理:宏定义+文件包含+条件编译 C语言函数(函数嵌套.递归调用--+局部变量和全局变量+extern关键字的使用+Visual Studio简单的使用教程+数据存储类别+ ...

最新文章

  1. libnet TCP示例
  2. I Hate It(线段树)
  3. 网站logo放在服务器,自己建网站如何设计网站LOGO
  4. CSS中position的absolute和relative用法
  5. VisualSVNServerTools(在线修改VisualSVN密码)
  6. 第七次全国人口普查公报[1](第六号) ——人口受教育情况
  7. 数学一年级应用题_一年级训练思维的数学应用题五十道,含答案解析
  8. 怎样在计算机查汉字,推荐一种集汉字识字、查字、计算机输入于一体的规范汉字字形输入法—郑码(之二)...
  9. 用spss进行数据的标准化处理_SPSS统计分析案例:数据标准化
  10. 三菱q系列plc连接电脑步骤_三菱Q系列PLC以太网通信设置方法
  11. 好看的皮囊 · 也是大自然的杰作 · 全球高质量 · 美图 · 集中营 · 美女 · 2017-08-29期...
  12. java 图形 登录_java登录图形界面 - osc_994n5tsc的个人空间 - OSCHINA - 中文开源技术交流社区...
  13. AQS(AbstractQueuedSynchronizer)是什么?
  14. 国内外知名源码商城系统盘点
  15. 请求数据应该放在Created还是Mounted
  16. 表单提交成功后重置表单
  17. 屏蔽 手机QQ黄钻官方团队总送礼物 的简单方法
  18. 资料分享|基于SHT11的简易温湿度检测仿真
  19. Android开发系列之XML解析
  20. 计算机技术与软件(初级、中级、高级)-领国家补贴

热门文章

  1. docker迁移与备份
  2. 第一行代码学习笔记第七章——探究内容提供器
  3. Qt之创建并使用共享库
  4. QT 生成二维码接口封装
  5. NFS mount failed, reason given by server: Permission denied ---nfs挂载失败
  6. python树莓派串口通信实例_Python实现树莓派USB串口通讯及云端对接
  7. 1.3.2 中断和异常(内中断和外中断、中断处理过程)
  8. PC-lint使用说明
  9. 电脑学习方法_怎样快速学习和熟悉电脑知识?|从小白到大神的快捷方法
  10. OpenLDAP / ubuntu 18.04 下源码编译及安装说明