嵌入式L1 数据类型

1、C语言标准发展史

  • C89 也称为 ANSI C
  • C99
  • C11

2、数据类型

2.1、ARM架构(含Cortex-M系列)数据类型

不同的处理器架构代表的int型的位数是不同的
在这里插入图片描述

在这里插入图片描述

2.2、 头文件stdint.h对数据类型的定义

stdint.h是C99标准中引进的一个标准C库的头文件,目前大部分单片机C编译器均支持,如IAR和MDK

在这里插入图片描述

2.3、 推荐变量定义方式

例如声明一个八位无符号整数即unsigned char ,我们通常建议采用uint8_t data,即采用C99标准的定义方式。

至于为啥要用typedef的方式重定义数据类型呢?目的如下:
最基础的标准C语言规定了int,unsigned char,long等数据类型,但是很不幸的是int在如**8位单片机(51单片机)C编译系统中是16位的整数,而在32位单片机(STM32)**C编译系统中是32位。

于是为了规避错误使用和理解的风险,我们用typedef重定义使数据类型变得更加清晰明了。

3、局部变量和全局变量

3.1、 局部变量

在函数内部被定义,且只在本函数范围内有效。也就是说只能在本函数中调用它们,在此函数外不能被使用的变量被称为局部变量
在这里插入图片描述

3.2、全局变量

在这里插入图片描述

所以在工程中,尽量少用全局变量。

3.3、 全局变量的缺点

在这里插入图片描述

3.4、变量的存储类别

变量的存储分为两种方式

  • 静态存储:在程序运行期间由系统分配固定的存储空间
  • 动态存储:在程序运行期间根据需要进行动态的分配存储空间

在这里插入图片描述

3.5、 用static声明局部或者全局变量

有时候希望函数中的局部变量的值在函数调用结束后不消失而保留原值,即占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。这时可以使用关键字static进行声明。

从以上描述中可以看出用static声明的局部变量被存放在静态存储区中。
在这里插入图片描述

4、堆和栈

栈(stack)空间,用于局部变量,函数调时现场保护和返回地址,函数的形参。

堆(heap)空间,主要用于动态内存的分配,也就是说用malloc,calloc,relloc等函数分配的变量空间是在堆上。

在这里插入图片描述

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值