0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

变量的存储

汽车电子威廉希尔官方网站 来源:我不是C神 作者: 我不是C神 2023-02-21 15:07 次阅读

图片

** 今天为大家带来变量存储的详细教程**

变量

在编写C程序的过程中,我们常常会使用到变量。而基本的变量类型在前面的教程也已经讲到,在我们创建这些变量的时候,变量会被创建在内存。值得注意的是,变量在不同的内存中有着不同的特性,因此,我们可以通过一些关键字来规定变量在内存创建的位置。从而达到我们想要的结果。

    在C语言中,变量在内存中的存储方式主要分为静态存储和动态存储。这两者的区别在于静态存储有固定的内存空间,而动态存储的内存空间是根据情况而定的。我们可以通过如下关键字来定义变量的存储位置。
  1. register 变量
    C语言中,我们可以通过 register 关键字标记变量,使用register关键字标记的变量会创建在寄存器中。但是在通常情况下,这样做没有什么作用,因为绝大多数的硬件的寄存器都不会占用内存空间。所以编译器会默认忽视 register 关键字。如果想有效地使用 register 关键字,就要通过一些汇编指令。但是不同硬件之间的寄存器又有所不同,因此 register 关键字的作用不大。
    
  2. auto 变量
    在C语言中,我们可以通过 auto 关键字创建一个自动的局部变量。加上这个关键字的变量在每一次定义的时候都会自动创建出一个新的变量,并且会对这个新的变量重新初始化。例如:
    
void autoAdd() {
  auto int autonum = 0;
  autonum =autonum + 1;
  cout << autonum << endl;
}
int  main() {
  autoAdd();
  autoAdd();
}

图片

从结果可以看到,调用两次函数后结果是同样的。因为auto修饰的变量每一次定义都会重新创建。
  1. extern 变量
    在C语言中, extern 关键字可以声明程序中会用到但还未定义的变量。 extern 在分文件编写的工程中尤为重要。因为在实际开发中,我们都会分文件,分功能编写。不同的文件会用到相同的变量,因此, extern 关键字是十分重要的。
    
  2. static 变量
    在C语言中, static 关键字可以将变量改为静态变量。静态变量会将数据存储在内存的全局区,全局区的数据在使用完成后释放。因此,静态变量可以始终保持其原本的值。
    

今天的内容就到这里,下期小编将带大家继续学习,各位看官老爷记得查阅哦~

图片图片图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内存
    +关注

    关注

    8

    文章

    3023

    浏览量

    74026
  • 变量
    +关注

    关注

    0

    文章

    613

    浏览量

    28364
  • C程序
    +关注

    关注

    4

    文章

    254

    浏览量

    36030
收藏 人收藏

    评论

    相关推荐

    TC277如何指定该全局数组变量存储地址的对齐方式?

    定义全局数组变量,如何指定该全局数组变量存储地址的对齐方式
    发表于 02-19 07:37

    LabVIEW变量存储

    LabVIEW中都用什么可以存储变量,类似于VC++中类函数的成员变量那种
    发表于 10-19 20:33

    变量存储小结

    变量是C语言最基础也是最核心的概念,对于初学C语言的同学来说变量存储总是觉得比较混乱。这里对C的变量做一个简单的小结,希望对大家有所帮助。我们看到对
    发表于 10-25 15:04

    变量存储小结

    变量是C语言最基础也是最核心的概念,对于初学C语言的同学来说变量存储总是觉得比较混乱。这里对C的变量一个简单的小结,希望对大家有所帮助。我们看到对
    发表于 12-02 10:52

    变量存储小结

    变量是C语言最基础也是最核心的概念,对于初学C语言的同学来说变量存储总是觉得比较混乱。这里对C的变量做一个简单的小结,希望对大家有所帮助。我们看到对
    发表于 12-13 15:27

    变量存储类型

    变量存储类型有4种,分别是static、external、register、auto,对于每一种存储类型,他们都有相应的使用方式和特点,下面就分别对这四种存储类型介绍一下:1.sta
    发表于 01-10 15:05

    6657局部变量存储地址异常 请问是什么原因?

    程序Debug时进入子函数,控制台显示访问0x44xxxxxx地址时出错。仔细一看,原来是子函数的局部变量存储在这个0x44xxxxxx地址。查了datasheet,0x40000000
    发表于 08-07 06:58

    如何通过BLE发送一个变量存储在一个智能手机上?

    你好,我是Gaurav。我想收集关于PSo4-042的LDR的读数。现在我可以在一个变量中收集数据。但我不知道我怎么把它送来。1、请告诉我如何通过BLE发送一个变量存储在一个智能手机上?谢谢您,Cyrkk.Access 02.Z
    发表于 10-25 10:02

    如何将变量存储到PIC24FF64GA002内存中

    你好。我想把一些整数和字符串变量存储到特定的数据EEPROM地址中。我使用MPLAB X 3.40、XC16和PIC24FJ64 GA02。我试着在互联网上找到一些工作代码,但是没有。如果有人能给出一个例子/源代码或如何将变量
    发表于 04-27 13:03

    C语言中局部变量存储位置是如何分配的?

    ADS下C语言中局部变量存储位置是如何分配的?
    发表于 04-26 06:31

    51单片机中变量存储类型有什么区别

    本文档的主要内容详细介绍的是51单片机中变量存储类型有什么区别。
    发表于 07-03 17:41 0次下载
    51单片机中<b class='flag-5'>变量</b>的<b class='flag-5'>存储</b>类型有什么区别

    如何将变量存储在指定内存地址 (基于Keil MDK-ARM)

    如何将变量存储在指定内存地址(基于Keil MDK-ARM)
    的头像 发表于 02-29 16:32 1.5w次阅读
    如何将<b class='flag-5'>变量</b><b class='flag-5'>存储</b>在指定内存地址 (基于Keil MDK-ARM)

    STM32堆和栈及变量存储理解

    STM32堆和栈及变量存储理解
    发表于 11-30 16:51 19次下载
    STM32堆和栈及<b class='flag-5'>变量</b>的<b class='flag-5'>存储</b>理解

    【STM32】STM32 变量存储在片内FLASH的指定位置

    在这里以STM32L4R5为例(官方出的DEMO板),将变量存储在指定的片内FLASH地址(0x081F8000)。一、MDK Keil软件操作uint8_t version[12
    发表于 12-02 11:06 9次下载
    【STM32】STM32 <b class='flag-5'>变量</b><b class='flag-5'>存储</b>在片内FLASH的指定位置

    单片机变量存储大小由什么决定?

    最近看到群友在讨论【单片机变量存储大小由什么决定?】的话题。
    的头像 发表于 01-26 10:11 675次阅读
    单片机<b class='flag-5'>变量</b><b class='flag-5'>存储</b>大小由什么决定?