嵌入式C语言常用关键字--学习笔记2

一、关键字

1、关键字概念及sizeof, return

编译器预先定义了一定意义的字符串

sizeof是关键字

  • sizeof:编译器给我们查看内存空间容量的一个工具,单位:字节
  • return 返回 承上启下
2、数据类型 (掌握大小范围
  • C操作对象:资源/内存(内存类型的资源:LCD LED I^2C 串口……)

  • C如何描述这些资源的属性?

    • 资源属性【大小】-----由数据类型关键字来定义,用来限制内存大小
    • 数据类型的大小最终由编译器来决定
1、char

​ 硬件芯片操作的最小单位:bit

​ 软件操作的最小单位:8bit==1B (一个字节)

​ char 描述的是硬件能够操作的在软件上体现的最小单位

应用场景:

  • 硬件处理的最小单位;
  • ASCII码表 8bit
  • 10位能够容纳的数据大小是:
2、int \long\short
  • int
    • 大小:编译器有一个最优的处理大小,是按照CPU数据总线的最大容量
    • 编译器最优处理大小:系统一个周期所能接受的最大处理单位即–int;32位的处理系统:CPU一个周期能处理的是32bit —4B----int;16位处理系统:2B–int
  • 整型常量
    • char a=300// 300是常量 300L:long类型
    • 2B: 65535 int a =66535// 在16位处理系统会溢出
  • 进制表示
    • 3bit—八进制 4bit—十六进制 二进制
    • 八进制:int a=010;//8 以0开头
    • 十六进制:int a =0x10//16
  • 特殊长度的限制符
    • long、short
3、unsigned signed 无符号有符号
  • 内存空间的最高字节是符号位还是数据位
  • 无符号:数据 采集到的一些视频。。。
  • 有符号:数字

补充: 计算机存储数据机制:正数存储的二进制原码,负数存储的是二进制的补码。 补码是负数的绝对值反码加1。

4、float 、double
  • 整数:
  • 浮点数:在内存中的表现形式和整数是完全不一样的
    • 大小:float—4B double—8B
  • 浮点型常量
    • 1.0f : 4 字节的float类型
5、void (语义意义

void a :占位标志,声明标志,而不是使用标识

3、自定义数据类型

C编译器默认的内存分配不符合实际资源的形式

自定义=

1、struct 元素之间的和

语法:

struct myabc{
	unsigned int a;
	unsigned int b;
	unsigned int c;
};
struct myabc mybuf; 

结构体中的顺序是有要求的

2、union 共用体 共用起始地址的一段内容

应用:技巧性的代码

语法:

union myabc{
	char a;
	int b;
};
struct myabc abc; 
3、enum 一一列举 被命名的整型常数的集合

地位:地位很低

语法:enum 枚举名称{常量列表};

#define MON 0
#define TUE 1
#define WED 2

enum {MON,TUE,WED};//相当于上面的宏定义 默认从0开始累加

应用场景:可以把不同芯片的功能打包

4、typedef 只是数据类型的别名

将原有的数据类型取个外号,更易阅读 xxx_t

语法:

​ int a; a是一个int 类型的变量

​ typedef int a_t; a是一个int类型的外号

​ a_t myheight;

应用场景:和指针一起用比较多

4、逻辑结构 分支/循环

C语言提供的程序执行方式

CPU顺序执行程序

1、if、else 条件
2、switch、case、default 多分支

switch(整型数字){ } 不能跟浮点数

3、do while/for

区别:

  • for: 次数
  • while:条件
4、continue、break、goto 循环中的控制符

goto: 在函数内部进行跳转很好用

5、类型修饰符

对内存资源存放位置的限定;数据类型是对大小的限定

资源属性中位置的限定,应用:希望一些程序不可修改,底层驱动中会大量使用

1、auto

默认情况 ----->分配的内存都是可读可写的区域,区域如果在{}中—>栈空间

2、register

int a;

register int a; //限制变量定义在寄存器上的修饰符

  • 内存(存储器) 寄存器;CPU操作寄存器是比去操作内存快得多

  • 0x100 R0,R2

  • 应用场景: 定义一些快速访问的变量

  • 编译器会尽量安排CPU的寄存器去存放a,如果寄存器不足时,a还是放在存储器中。(尽量去放)

3、static

静态

应用场景:

  • 修饰3种数据

    • 函数内部的变量

      • int fun(){
        	static int a;
        }
        
    • 函数外部的变量(全局变量

      • static int a;
        int fun(){
        
        }
        
    • 函数的修饰符

      • int fun()--->static int fun();
        
4、extern 外部声明

应用场景:全局变量函数中使用

5、const 常量的定义

只读的变量

内存泄漏:

6、volatile 告知编译器编译方法的关键字,不优化编译

驱动开发的底层用的很多

修饰变量的值的修改,不仅仅可以通过软件,也可以通过其他方式(硬件外部的用户)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值