C--程序基本数据量的存储

量值与数据

变量

常量

常量的定义:C语言中,通过内联方式直接写到源代码中的字面量值一般被称为常量。
那么我们这里引出一个问题,const关键字按照与定义变量相同语法定义的量,也是常量,但它与字面常量有什么区别呢?

我们首先明确一点,二者的值在其第一次出现时便被确定且无法被再次修改

所以只读变量和字面量常量的最重要的区别就是:const修饰的只读变量不具有常量表达式的属性因此不能用来表示数组大小或使用在case语句中。其次,常量表达式本身会在程序编译阶段求值,而只读变量的值只能在程序实际运行时才被得知。并且编译器通常并不会对只读变量进行内联处理,因此其求值不符合常量表达式特征。(常量表达式会被内联处理)

数据存储形式

通常采用补码来存放有符号整数,使用直接对应的二进制位格式来存放无符号整数,使用IEEE-754标准存放浮点数。
在计算机眼里,其实没有正负数之分,符号性的差异仅仅体现在计算机指令操作数据时的具体使用方式上。

数据存储位置

变量根据其定义所在位置,可以被划分为全局变量、局部变量。
进一步地,可以通过添加static关键字,将其标记为静态类型,延长变量的生存周期并限定其可见范围为当前的编译单元,即变量所在当前源文件;通过添加register关键字,可以建议编译器将变量值存放在寄存器中,提升读写性能。
不同变量也会被存放在虚拟内存地址的不同空间:

在这里插入图片描述
接下来我们展开讲讲:
首先是初始化的全局变量和静态变量,这类变量的值具有与应用程序相同的生命周期,它们的值通常会被存放在虚拟地址空间的.data中。

我们这里先简单理解:应用程序在被正常加载和运行之前,需要首先将应用程序代码及其相关依赖项的数据映射到内存中的某个位置,这段包含应用程序正常运行所必备数据的内存段即进程的VAS(Vitrual Address Space)

局部变量一般会被存放在寄存器或应用程序VAS的栈内存中

未初始化的全局变量和静态变量以及直接通过malloc、calloc等创建的内存块所包含的数据,他们分别被存放在进程VAS的.bss和堆内存中。

最后,不同类型的常量数据存储方式是不同的。他们会按照数据的大小和类型被选择性地放进VAS的.rodata(readonly data)和.text(代码段)中。
一般常量存储规律:如果内联常量较大,则会被单独存放到.rodata中,否则会直接内联到.text中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ldc1314-stm32程序是一种基于STM32微控制器的软件程序。STM32是意法半导体公司推出的32位微控制器系列产品,具有高性能、低功耗以及丰富的外设资源。 ldc1314-stm32程序是根据ldc1314模块的特性和功能开发的。ldc1314模块是一种电感式物理传感器,用于测非接触式物理,如位移、速度和线圈电感等。通过将ldc1314模块与STM32微控制器连接,并编写相应的程序,可以实现对该模块的精确控制和数据采集。 通过ldc1314-stm32程序,我们可以实现以下功能: 1. 启动和初始化:程序需要首先通过配置STM32微控制器的引脚和时钟,以及初始化ldc1314模块的寄存器和参数。 2. 数据采集和处理:程序会定时读取ldc1314模块的输出数据,例如电感值或其它物理数据。然后,根据需要进行数据处理,例如进行滤波、校准或转换为实际物理单位。 3. 数据传输:程序可以通过串口、I2C、SPI或其他通信接口将采集到的数据传输给其他设备或存储介质(如计算机或SD卡)。 4. 控制和调节:可以通过程序对ldc1314模块进行参数配置和校准,以调节灵敏度或滤除噪声。同时,还可以根据采集到的物理数据,实现相关的控制逻辑,例如调节电机速度或控制机械臂的位置。 综上所述,ldc1314-stm32程序是一种用于与ldc1314模块通信并实现数据采集、处理、传输和控制的软件程序。它基于STM32微控制器,并通过编程实现和ldc1314模块的交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值