C语言中的变量按照生存周期来区分,可以分为静态存储和动态存储。

一、静态存储

静态存储是在程序运行过程中分配固定的存储空间。静态存储区中存放了整个程序运行过程中的都存在的变量,如全局变量,因此静态存储区也叫做全局存储区。

二、动态存储

动态存储则是在程序运行过程中根据需要进行动态分配存储空间。动态存储区中存放的变量是根据程序运行的需要进行建立和释放的,如函数形参,自动变量,函数调用时的现场保护和返回地址等。

C语言中存储类别分为四类:自动(auto)、静态(static)、寄存器(register)、外部(extern)。

一、自动存储(auto)

用关键字auto定义的变量为自动变量,auto不写则默认为自动存储。自动存储类别属于动态存储方式。

auto int a, b; //定义自动变量a, b

二、静态存储(static)

用static修饰的变量,如果是定义在函数内部,称之为静态局部变量;如果是定义在函数外部,称之为静态外部变量。

static int a; //定义静态变量a

注意,静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在整个程序运行期间都不释放。静态局部变量在编译时赋初值,即只赋初值一次。

三、寄存器变量(register)

为了提高效率,C语言允许将局部变量的值放在CPU的寄存器中,称之为“寄存器变量”,用关键字register进行声明。

register int a; //定义寄存器变量a

注意,只有局部自动变量和形式参数可以作为寄存器变量,局部静态变量不能定义为寄存器变量;一个计算机系统中的寄存器数量有限,因此不能定义任意多个寄存器变量。

四、外部变量(extern)

用extern声明的变量为外部变量,外部变量的意义是某函数可以调用在该函数之后定义的变量。如:

#include

int main()

{

extern int a; //声明此处使用的是外部全局变量

printf("a的值为%d\n", a);

return 0;

}

int a = 5;

c语言变量是如何存储,C语言变量存储相关推荐

  1. C语言变量的定义包括变量存储类型和变量的什么?

    C语言变量的定义包括变量存储类型和变量的名称.C语言定义变量的格式:"数据类型 变量名;","数据类型"表示想要存储什么类型的数据,"变量名" ...

  2. C语言学习第五天(存储类和变量的作用域)默认熟悉数据结构

    存储类 存储类定义 C 程序中变量/函数的范围(可见性)和生命周期.这些说明符放置在它们所修饰的类型之前. auto 存储类 auto 存储类是所有局部变量默认的存储类. register 存储类 r ...

  3. c语言存储汉字的变量类型,C语言之变量存储类型与链接属性

    C语言中一个重要的东西就是弄清申明变量的类型.作用域.存储类型.链接属性等,例如是整型还是浮点型,存储于普通内存还是堆栈或者寄存器,作用于全局还是局部,能否被其他文件 引用等. 链接属性 申明变量或函 ...

  4. C语言中变量存储类别——自动变量,寄存器变量,静态外部链接;

    c提供了多种不同模型或存储类别在内存中存储数据. 作用域: 作用域描述程序中可访问标识符的区域. 作用域描述了程序中可以访问一个标识符的一个或多个区域.即变量的可见性. 一个变量的作用域可以是代码块作 ...

  5. c语言结果用全局变量返回,c语言参数传递和返回值及变量存储.doc

    unsigned int n; void f1(); int f2(int,int); void far f3(); main() { n=0; f1(); n=f2(1,2); f3(); } vo ...

  6. c语言const与*位置关系,C语言程序的存储区域与const关键字的使用方法

    四.程序中段的使用 C语言中的全局区(静态区),实际上对应着下述几个段: 只读数据段:R0 Data 读写数据段:RW Data 未初始化数据段:BSS Data 一般来说,直接定义的全局变量在未初始 ...

  7. c语言静态存储和动态存储,C语言中的静态内存与动态内存

    我们知道,内存分为动态内存和静态内存,我们先讲静态内存. 一.静态内存 内存管理---存储模型 存储模型决定了一个变量的内存分配方式和访问特性,在C语言中主要有三个维度来决定:1.存储时期 2.作用域 ...

  8. C语言--测试电脑存储模式(大端存储OR小端存储)

    相信大家都知道大端存储和小端存储的概念,这在平时,我们一般不用考虑,但是,在某些场合,这些概念就显得很重要,比如,在 Socket 通信时,我们的电脑是小端存储模式,可是传送数据或者消息给对方电脑时, ...

  9. 单片机c语言存数据,单片机中C语言的数据存储与程序编写

    一.五大内存分区 内存分成5个区,它们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 1.栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区. ...

最新文章

  1. Softmax函数详解与推导
  2. Think Python - Chapter 12 Tuples
  3. 开发java程序的步骤_开发 Java 程序的一般步骤是:源程序编辑、 和 。_学小易找答案...
  4. python面试题总结(3)-- 数据类型(字符串)
  5. 爱奇艺首页底部导航按钮android,仿爱奇艺/腾讯视频ViewPager导航条实现
  6. 一元享移动怎么样_中国移动放大招!月租9元享200GB流量,网友:这套路谁敢用?...
  7. 使用 postman 进行接口测试
  8. 高德地图加载白屏问题No implementation found for long com.autonavi.amap.mapcore.MapCore.nativeNew
  9. 谁来给电视盒子接班?
  10. firebug2.0.7 下载
  11. CSS——下拉框的制作(以小米商城为例)
  12. Retrofit基本使用
  13. 布局布线流程的10大步骤
  14. 如何通过TikTok联盟营销赚钱
  15. 【数值计算】数值解析--二阶偏微分方程的3种基本形
  16. 论文研读笔记(三)——基于障碍函数的移动机器人编队控制安全强化学习
  17. 文章伪原创-文章伪原创工具
  18. 让你的Android应用支持转移到SD卡
  19. Matlab神经网络竞争传递函数compet
  20. 关于大数据的八大热点问题

热门文章

  1. SmartRefreshLayout上拉刷新和下拉加载使用心得
  2. SQLServer数据库注入-墨者学院(SQL手工注入漏洞测试(Sql Server数据库))
  3. 毕业设计-基于SSM框架大学教务管理平台项目开发实战教程(附源码)
  4. Mac电脑使用pip install出现语法错误
  5. Jquery中$(document).ready()的作用
  6. Spotlight 监控工具使用
  7. 网页编辑器的快捷键及常用操作
  8. 读懂python语言_一文读懂python反射机制
  9. python中步长什么意思_python步长什么意思【Python教程】,Python,step,步长
  10. 什么是EMO?我emo了是什么意思?