c语言变量是如何存储,C语言变量存储
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语言变量存储相关推荐
- C语言变量的定义包括变量存储类型和变量的什么?
C语言变量的定义包括变量存储类型和变量的名称.C语言定义变量的格式:"数据类型 变量名;","数据类型"表示想要存储什么类型的数据,"变量名" ...
- C语言学习第五天(存储类和变量的作用域)默认熟悉数据结构
存储类 存储类定义 C 程序中变量/函数的范围(可见性)和生命周期.这些说明符放置在它们所修饰的类型之前. auto 存储类 auto 存储类是所有局部变量默认的存储类. register 存储类 r ...
- c语言存储汉字的变量类型,C语言之变量存储类型与链接属性
C语言中一个重要的东西就是弄清申明变量的类型.作用域.存储类型.链接属性等,例如是整型还是浮点型,存储于普通内存还是堆栈或者寄存器,作用于全局还是局部,能否被其他文件 引用等. 链接属性 申明变量或函 ...
- C语言中变量存储类别——自动变量,寄存器变量,静态外部链接;
c提供了多种不同模型或存储类别在内存中存储数据. 作用域: 作用域描述程序中可访问标识符的区域. 作用域描述了程序中可以访问一个标识符的一个或多个区域.即变量的可见性. 一个变量的作用域可以是代码块作 ...
- 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 ...
- c语言const与*位置关系,C语言程序的存储区域与const关键字的使用方法
四.程序中段的使用 C语言中的全局区(静态区),实际上对应着下述几个段: 只读数据段:R0 Data 读写数据段:RW Data 未初始化数据段:BSS Data 一般来说,直接定义的全局变量在未初始 ...
- c语言静态存储和动态存储,C语言中的静态内存与动态内存
我们知道,内存分为动态内存和静态内存,我们先讲静态内存. 一.静态内存 内存管理---存储模型 存储模型决定了一个变量的内存分配方式和访问特性,在C语言中主要有三个维度来决定:1.存储时期 2.作用域 ...
- C语言--测试电脑存储模式(大端存储OR小端存储)
相信大家都知道大端存储和小端存储的概念,这在平时,我们一般不用考虑,但是,在某些场合,这些概念就显得很重要,比如,在 Socket 通信时,我们的电脑是小端存储模式,可是传送数据或者消息给对方电脑时, ...
- 单片机c语言存数据,单片机中C语言的数据存储与程序编写
一.五大内存分区 内存分成5个区,它们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 1.栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区. ...
最新文章
- Softmax函数详解与推导
- Think Python - Chapter 12 Tuples
- 开发java程序的步骤_开发 Java 程序的一般步骤是:源程序编辑、 和 。_学小易找答案...
- python面试题总结(3)-- 数据类型(字符串)
- 爱奇艺首页底部导航按钮android,仿爱奇艺/腾讯视频ViewPager导航条实现
- 一元享移动怎么样_中国移动放大招!月租9元享200GB流量,网友:这套路谁敢用?...
- 使用 postman 进行接口测试
- 高德地图加载白屏问题No implementation found for long com.autonavi.amap.mapcore.MapCore.nativeNew
- 谁来给电视盒子接班?
- firebug2.0.7 下载
- CSS——下拉框的制作(以小米商城为例)
- Retrofit基本使用
- 布局布线流程的10大步骤
- 如何通过TikTok联盟营销赚钱
- 【数值计算】数值解析--二阶偏微分方程的3种基本形
- 论文研读笔记(三)——基于障碍函数的移动机器人编队控制安全强化学习
- 文章伪原创-文章伪原创工具
- 让你的Android应用支持转移到SD卡
- Matlab神经网络竞争传递函数compet
- 关于大数据的八大热点问题
热门文章
- SmartRefreshLayout上拉刷新和下拉加载使用心得
- SQLServer数据库注入-墨者学院(SQL手工注入漏洞测试(Sql Server数据库))
- 毕业设计-基于SSM框架大学教务管理平台项目开发实战教程(附源码)
- Mac电脑使用pip install出现语法错误
- Jquery中$(document).ready()的作用
- Spotlight 监控工具使用
- 网页编辑器的快捷键及常用操作
- 读懂python语言_一文读懂python反射机制
- python中步长什么意思_python步长什么意思【Python教程】,Python,step,步长
- 什么是EMO?我emo了是什么意思?