前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C语言 | 变量的存储方式

C语言 | 变量的存储方式

原创
作者头像
小林C语言
修改于 2021-04-19 03:06:21
修改于 2021-04-19 03:06:21
2.2K00
代码可运行
举报
运行总次数:0
代码可运行

C语言动态存储方式与静态存储方式

静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式;动态存储方式是在程序运行期间根据需要进行动态的分配存储空间的方式。

内存中的供用户使用的存储空间可以分为3部分,

  • 程序区
  • 静态存储区
  • 动态存储区

全局变量全部存放在静态存储区中,在程序开始执行时给全局变量分配存储区,程序执行完毕就释放。

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

  • 函数形式参数。
  • 函数中定义的没有用关键字static声明的变量,即自动变量。
  • 函数调用时的现场保护和返回地址等。

在C语言中,每一个变量和函数都有两个属性:

  • 数据类型
  • 数据的存储类别。

C语言的存储类别包括4种:

  • 自动的(auto)
  • 静态的(static)
  • 寄存器的(register)
  • 外部的(extern)。

C语言局部变量的存储类别

自动变量(auto变量)

  • 函数中的局部变量,如果不专门声明static存储类别,都是动态地分配存储空间的,数据存储在动态存储区中。自动变量用关键字auto做存储类别声明。

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

  • 函数中的局部变量的值在函数调用结束后不消失而继续保留原值,即其占用的存储单元不释放,在下一次再调用该函数时,该变量已有值。

寄存器变量(register变量)

  • 为提高执行效率,允许将局部变量的值放在CPU中的寄存器中,需要用时直接从寄存器取出参加运算,不必再到内存中去存取。由于对寄存器的存取速度远高于对内存的存取速度,因此这样做可以提高执行效率,这种变量叫寄存器变量,用关键字register作声明。

C语言全局变量的存储类别

在一个文件内扩展外部变量的作用域

  • 如果由于某种考虑,在定义点之前的函数需要引用该外部变量,则应该在引用之前用关键字extern对该变量作“外部变量声明”,表示把该外部变量的作用域扩展到此位置。

将外部变量的作用域扩展到其他文件。

将外部变量的作用域限制在本文件中。

注意,用auto、register和static声明变量时,是在定义变量的基础上加上这些关键字,而不能单独使用。

C语言存储类别案例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<stdio.h>
int main()
{
  auto int num1=10;
  register int num2=20;
  static int num3=30;
  printf("%d\n",num1);
  printf("%d\n",num2);
  printf("%d\n",num3);
  return 0;
}

编译运行结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
10
20
30

--------------------------------
Process exited after 0.04696 seconds with return value 0
请按任意键继续. . .

以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~

C语言学习路线    C语言开发工具

VC6.0、Devc++、VS2019使用教程

100道C语言源码案例请去公众号:C语言入门到精通

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
7.5 C语言变量的存储方式和生存期
4、全局变量全部存放在静态存储区中,在程序开始执行时给全局变量分配存储区,程序执行完毕就释放。
小林C语言
2020/12/07
8220
7.5 C语言变量的存储方式和生存期
C语言变量的存储方式、作用域和生命周期
1、作用域问题:在一个函数中定义的变量,在其他函数中能否被引用?在不同位置定义的变量,在什么范围内有效?
CtrlX
2022/11/22
9750
C语言变量的作用域和类别-学习二十
本文最后更新于2022年02月14日,已超过13天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
XG.孤梦
2022/03/01
1K0
C语言变量的作用域和类别-学习二十
6.7 变量的存储方式和生存期
函数中的局部变量,如果不专门声明为static(静态)存储类别,都是动态地分配存储空间 的。在调用该函数时,系统会给这些变量分配存储空间,在函数调用结束时就自动释放这 些存储空间,因此这类局部变量称为自动变量
小林C语言
2019/08/19
6210
C++变量总结束 | 输出各种变量的值
C++中一个函数一般由:声明部分、执行语句两部分组成,声明部分的作用是对有关的标识符的属性进行说明,对于函数,声明和定义的区别是明显的,函数的声明是函数的原型,而函数的定义是函数功能的确立。
小林C语言
2020/12/01
2.1K0
C++变量总结束 | 输出各种变量的值
c语言局部变量、全局变量、静态变量、内部函数、外部函数、声明、定义、extern作用总结
  前两种方式定义的变量可以在函数内任何地方使用,而第三种方式定义的变量只能在复合语句内使用。
vv彭
2020/10/27
10.9K0
c语言局部变量、全局变量、静态变量、内部函数、外部函数、声明、定义、extern作用总结
C语言之函数
  结构化程序设计主张按功能来分析需求,主要原则自顶向下,逐步求精,模块化等。 主张按功能把软件系统逐步细分,每个功能都负责对数据进行一次处理,每个功能接收一些数据,处理完后输出一些数据,这种处理方式也被称为面向数据流的处理方式。 其最小单位是函数,每个函数负责一个功能,整个软件系统由一个个函数组成,其中作为程序入口的函数被称为主函数。 主函数依次调用其他普通函数,普通函数之间依次调用,从而完成整个软件系统的功能。   一个C程序可由一个主函数和若干个其他函数构成,主函数调用其他函数,其他函数也可互相调用。
互联网金融打杂
2018/04/03
2.9K0
C语言之函数
函数(六)(局部变量与全局变量)
在函数内部定义的变量称为局部变量。函数体开头部分、函数头中的形式参数和函数体内复合语句中定义的变量都属于局部变量。
pigeon
2022/04/11
7690
函数(六)(局部变量与全局变量)
c语言全局变量和局部变量问题汇总
局部变量能够与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内能够定义多个同名的局部变量,比方在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。
全栈程序员站长
2022/07/11
9460
C++变量的存储类别 | 判断是否是闰年
在上一节小林讲过,作用域从空间的角度来分析的,分为全局变量和局部变量,在这一节中,小林带着你学习变量的另一种属性,变量在内存中的存在期间,也就是存储期。
小林C语言
2020/12/01
8430
C++变量的存储类别 | 判断是否是闰年
C语言入门系列之7.函数的定义、参数、调用和存储类别
一个较大的程序可分为若干个程序模块,每一个模块用来实现一个特定的功能。 在高级语言中用子程序实现模块的功能,子程序由函数来完成。 一个C程序可由一个主函数和若干个其他函数构成。
cutercorley
2020/07/23
1.9K0
C语言入门系列之7.函数的定义、参数、调用和存储类别
【编程经验】变量的存储类型
在 C 语言中,变量是对程序中数据所占内存空间的一种抽象定义,定义变量时,用户定义变量的名、 变量的类型,这些都是变量的操作属性。不仅可以通过变量名访问该变量,系统还通过该标识符确定变量 在内存中的位置。
编程范 源代码公司
2018/07/24
8930
最全的C语言基础知识梳理总结
C语言是当代人学习及生活中的必备基础知识,应用十分广泛,下面为大家带来C语言基础知识梳理总结,C语言零基础入门绝对不是天方夜谭!
诸葛青云
2019/06/19
2.1K0
最全的C语言基础知识梳理总结
开讲啦:Chap 07 用函数实现模块化程序设计
在设计一个较大的程序时,往往把它分为若干个程序模块,每一个模块包含一个或多个函数,每个函数实现一个特定的功能。一个C程序可由一个主函数和若干个其他函数构成。由主函数调用其他函数,其他函数也可以互相调用,同一个函数可以被一个或多个函数调用任意多次,如图所示。
石璞东
2021/10/13
5640
C语言基础知识梳理总结[通俗易懂]
C语言是当代人学习及生活中的必备基础知识,应用十分广泛,下面为大家带来C语言基础知识梳理总结,C语言零基础入门绝对不是天方夜谭!
全栈程序员站长
2022/10/01
8170
【超全】C语言初学者必须掌握的关键字!
其实小伙伴在写代码的时候,关键字还是用的比较多的,老九主要就平常中用到的常用关键字进行总结,便于小伙伴们更全面的理解其在代码中的意图。 C语言关键字总结 static关键字C语言 const关键字C语言 register关键字用法 auto关键字 inline内联函数 static关键字 static可以用来修饰局部变量、全局变量、函数 1、局部变量: 生命周期:原先存在栈中,生命周期语句执行完毕便结束了。现在存放到静态数据区,生命周期持续到整个程序执行结束。 作用域:并没有改变作用域,还是
老九君
2018/03/06
8680
【超全】C语言初学者必须掌握的关键字!
OC学习2——C语言特性之函数
1、OC是在C语言的基础上进行扩展的,在OC中直接用C语言进行coding也是可以通过编译的。因此,函数定义的语法格式如下: 函数返回值类型 函数名(形参列表) { //由零条或多条可执行性语句组成的函数提 } 2、函数的传递机制:值传递、地址传递。 值传递:将实际的参数值的副本(复制品)传入函数内,参数本身不受函数内对其副本的改变的影响。 地址传递:将实际参数的地址的副本传入函数,函数中对地址对应位置的值进行改变会影响到实际参数的值。 3、内部函数和外部函数: 内部函数:定义函数
mukekeheart
2018/02/28
1.3K0
变量的存储类型 auto register extern static
从中我们可以看出:把局部变量改为静态局部变量是改变了它的存储方式,即改变了它的生存期。
叶茂林
2023/07/28
3220
static在C语言中主要是两种用法
首先从内存四区的角度去看,auto即为普通的局部变量,存储在栈上,当函数结束时,随之释放。
战神伽罗
2019/07/24
1.2K0
C语言中的数据类型
常量命名统一为大写格式。如果是成员变量,均以m开始。如果是普通变量,取以实际意义相符合的变量名称,然后在其前添加相关的数据类型。如果是指针,则为其标识符添加p。
诸葛青云
2019/07/22
1.5K0
C语言中的数据类型
推荐阅读
相关推荐
7.5 C语言变量的存储方式和生存期
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验