C语言中变量的储存类别

C语言中变量的储存类别
1.动态存储方式与静态动态存储方式:
从变量值存在的作时间(即生存期)角度来分,可以分为静态存储方式和动态存储方式。
静态存储方式:是指在程序运行期间分配固定的存储空间的方式。
动态存储方式:是在程序运行期间根据需要进行动态的分配存储空间的方式。
用户存储空间可以分为三个部分:
1) 程序区;
2) 静态存储区;
3) 动态存储区;

全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。在程序执行过程中它们占据固定的存储单元,而不动态地进行分配和释放;
动态存储区存放以下数据:
1) 函数形式参数;
2) 自动变量(未加static声明的局部变量);
3) 函数调用实的现场保护和返回地址;
对以上这些数据,在函数开始调用时分配动态存储空间,函数结束时释放这些空间。
在c语言中,每个变量和函数有两个属性:数据类型和数据的存储类别。

2.auto变量

函数中的局部变量,如不专门声明为static存储类别,都是动态地分配存储空间的,数据存储在动态存储区中。函数中的形参和在函数中定义的变量(包括在复合语句中定义的变量),都属此类,在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空间。这类局部变量称为自动变量。自动变量用关键字auto作存储类别的声明。
关键字auto可以省略,auto不写则隐含定为“自动存储类别”,属于动态存储方式。

3.用static声明局部变量
有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,这时就应该指定局部变量为“静态局部变量”,用关键字static进行声明。
对静态局部变量的说明:
1) 静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。而自动变量(即动态局部变量)属于动态存储类别,占动态存储空间,函数调用结束后即释放。
2) 静态局部变量在编译时赋初值,即只赋初值一次;而对自动变量赋初值是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。
3) 如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。而对自动变量来说,如果不赋初值则它的值是一个不确定的值。

4.register变量
为了提高效率,C语言允许将局部变量得值放在CPU中的寄存器中,这种变量叫“寄存器变量”,用关键字register作声明。
说明:
1) 只有局部自动变量和形式参数可以作为寄存器变量;
2) 一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量;
3) 局部静态变量不能定义为寄存器变量。

5.用extern声明外部变量
外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。如果在定义点之前的函数想引用该外部变量,则应该在引用之前用关键字extern对该变量作“外部变量声明”。表示该变量是一个已经定义的外部变量。有了此声明,就可以从“声明”处起,合法地使用该外部变量。

转载于:https://www.cnblogs.com/yuzaipiaofei/archive/2011/07/13/4124615.html

C语言中变量的储存类别相关推荐

  1. 在c语言中 使用变量的要求,关于C语言中变量的探讨

    摘 要: 在所有的计算机高级语言中,都存在着变量这样一个重要的概念.变量是计算机高级语言程序的重要成分之一.与其他语言中的变量相比,C语言中的变量所包含的内容更为丰富,包括变量的定义.数据类型.变量数 ...

  2. C语言里的4种存储类别,C语言中变量储存的类别

    C语言中变量储存的类别 C语言根据变量的生存周期来划分,可以划分为静态存储方式和动态存储方式. C语言中变量储存的类别 静态存储方式:是指在程序的运行期间分配固定的存储空间的方式.静态存储区中存储放了 ...

  3. c语言中变量的大小,C语言变量定义

    C语言变量定义 程序设计就是让计算机按照一定的指令来进行工作,可以说数据的处理是程序设计的主要任务.那么数据是怎么加入到计算机的内存中呢?下面是小编分享的C语言变量定义,欢迎大家阅读!更多相关信息请关 ...

  4. 在c语言中函数的定义变量的值为,变量定义(C语言中变量的声明和定义)

    变量定义(C语言中变量的声明和定义),哪吒游戏网给大家带来详细的变量定义(C语言中变量的声明和定义)介绍,大家可以阅读一下,希望这篇变量定义(C语言中变量的声明和定义)可以给你带来参考价值. 3.函数 ...

  5. 如何理解c语言的变量,C语言中变量的理解.PDF

    C语言中变量的理解 年第 期 建建 电电 脑脑 2011 3 59 C 语言中变量的理解 潘 莉 河南经贸职业学院 东校区 河南郑州 ( 冤 450009 ) 摘 要 在很多 级语言的基础语法中都有变 ...

  6. 单片机c语言字符,单片机C语言中变量的定义方法解析

    描述 1.C语言中变量的定义方法 -C语言中变量定义语法为: #pragma rambank0 :即以关键词#pragma开始,rambank0指明资料区块为第0块. unsigned char m_ ...

  7. C语言中变量的静态分配(Static)和动态分配(StackHeap)

    目录 C语言中变量的静态分配(Static)和动态分配(Stack&Heap) 变量的静态分配 包含了哪些变量? 全局变量和局部变量(staic关键字) 通过一个例子进行诠释 变量的动态分配 ...

  8. java语言变量分为_在Java语言中变量分为四种,分别是___________________________________________。_学小易找答案...

    [填空题]One day, at the registrar's office of a college, I noticed how parents are behaving with their ...

  9. C语言中变量的作用域

    C语言中变量的作用域 C语言中所有变量都有自己的作用域,申明变量的类型不同,其作用域也不同.C语言中的变量,按照作用域的范围可分为两种, 即局部变量和全局变量. 一.局部变量 局部变量也称为内部变量. ...

最新文章

  1. python判断列表list中的内容、数值是否全部都大于某一个阈值(threshold)、如果数值都大于某一个阈值(threshold)则跳出循环
  2. dev schedulercontrol 不显示周_CBA更新伤病报告:丁彦雨航仍需5周 阿联还要休养半年...
  3. 清华导学故事|卓晴:在每个人生阶段中,找到自己的定位
  4. c3p0数据库连接池+mysql数据库基本使用方法
  5. html hover图片效果,CSS第9款:Imagehover.css 纯CSS打造的图片悬停效果
  6. 干货丨你知道Python中a += b和a = a + b的结果是不一样的吗?
  7. BZOJ 2456 mode
  8. php应用数据库连接中的单例模式
  9. php框架m方法详细,Thinkphp框架中D方法与M方法的区别是什么
  10. 增删改查(curd)
  11. ue4插件导入导出_Blender到UE4的无缝衔接
  12. NLP情感分析笔记(四):卷积情感分析
  13. android最贵的手机,2019翻盖手机排行榜_2019年最贵的手机有哪些?最贵手机排行榜...
  14. Tomcat项目get请求中参数乱码问题
  15. 东大22春领导科学与决策X《领导科学与决策》在线平时作业2题目非答案
  16. 程序员如何提升自己的能力
  17. ai文字渐变_AI制作渐变色立体文字效果
  18. HDU-3605 Escape
  19. Acess错误:文件共享锁定数溢出
  20. eclipse创建Javaweb项目

热门文章

  1. PaperNotes(12)-Autoregressive Quantile networks for generative modeling
  2. 密码学专题 随机数文件
  3. 评论:电商巨头们谁有勇气晒晒“价格战”账单?
  4. 10个管理工作时间的小技巧
  5. JAVA 构造 MAP 并初始化 MAP、定义时就初始化
  6. python之工作举例:通过复制NC文件来造数据
  7. JS与APP原生控件交互
  8. [Oracle]UNIX与Windows 2000上Oracle的差异(I)
  9. iPhone屏幕尺寸/launch尺寸/icon尺寸
  10. 猫:君主般的眼神 监视领地。 狗