【嵌入式——C语言】关键字

【嵌入式——C语言】关键字

  • 数字类型相关
    • 基本数据类型
    • 其他类型
  • 存储相关
    • register
    • static
    • auto
    • extern
    • const
  • 控制语句相关
  • 其他

数字类型相关

基本数据类型

类型说明占用字节(32位)
char声明字符型变量或函数返回值类型1字节
short声明短整型变量或函数2字节
int声明整型变量或函数4字节
long声明长整型变量或函数返回值类型4字节
float声明浮点型变量或函数返回值类型4字节
double声明双精度浮点型变量或函数返回值类型8字节

其他类型

类型说明
struct声明结构体类型
union声明共用体类型
enum声明枚举类型
signed声明有符号类型变量或函数
unsigned声明无符号类型变量或函数
void声明函数无返回值或无参数,声明无类型指针

struct 示例

struct Books
{char  title[50];char  author[50];char  subject[100];int   book_id;
} book;  

union 示例

union U
{char a;int b;
}u; 

enum 示例

enum DAY
{MON=1, TUE, WED, THU, FRI, SAT, SUN
};

signed、unsigned 示例

signed char c = 'a';
unsigned char c = 'a';

存储相关

register

register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量,在编译的时候告诉编译器这个是寄存器变量,尽量将其存储空间分配在寄存器.

注意:

  1. 定义的变量不一定真的在寄存器内
  2. cpu取数据的时候去寄存器中取,要比去内存中取速度快
  3. 因为寄存器比较宝贵,所以不能定义寄存器数组
  4. 只能修饰字符型和整形,不能修饰浮点型
  5. 不能对寄存器变量取地址,只有存放在内存中的数据才有地址

代码示例:

register int  miles;

static

static 存储类指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。

代码示例:

static int a=5;

auto

auto 存储类是所有局部变量默认的存储类。定义在函数中的变量默认为 auto 存储类,这意味着它们在函数开始时被创建,在函数结束时被销毁

代码示例:

auto int month;

extern

extern 存储类用于定义在其他文件中声明的全局变量或函数。当使用 extern 关键字时,不会为变量分配任何存储空间,而只是指示编译器该变量在其他文件中定义。

代码示例:
a.c文件

#include <stdio.h>int count ;
extern void write_extern();int main()
{count = 5;write_extern();
}

b.c文件

#include <stdio.h>extern int count;void write_extern(void)
{printf("count is %d\n", count);
}

const

定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变,
  1. 修饰普通变量,代表只读的意思
const int a= 10;
  1. 修饰指针
    const char str*
    str指向的内存的内容不能通过str来修改,但是str的指向是可以改变的
    char buf12[20] = "helloworlk";
    const char* strc1 = buf12;
    *strc1 = 'w';//是错误的 表达式必须是可修改的左值
    printf("strc1=%s\n", strc1);
    
    char const str*
    str是只读变量,str不能指向其他地方,但是str指向的内存的内容是有可能可以修改的
    char buf11[20] = "helloworlk";
    char* const strc = buf11;
    printf("strc=%s\n", strc);//strc = helloworlk
    *strc = 'w';
    printf("strc=%s\n", strc);//strc = welloworlk
    strc = "123123";//是错误的
    
    const char const str*
    str不能指向别的地方,str指向的内存的内容也不能修改
    char buf13[20] = "helloworlk";
    const char* const strc2 = buf13;
    printf("strc2=%s\n", strc2);
    strc2 = "123123";//是错误的
    

控制语句相关

关键字备注
if条件语句
else条件语句否定分支(与 if 连用)
break跳出当前循环
continue结束当前循环,开始下一轮循环
for一种循环语句
while循环语句的循环条件
do循环语句的循环体
switch用于开关语句
case开关语句分支
goto无条件跳转语句
default开关语句中的"其它"分支

其他

sizeof
测量变量,数组的占用存储空间大小

sizeof(a);

typedef
重命名相关关键字

typedef short int INT16;
//INT16 b;和short int b;是一个效果

volatile
每次用volatile修饰的变量,都重新去内存中取,保证是最新的

volatile int vint;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/217089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

784. 字母大小写全排列 dfs + 回溯算法 + 图解 + 笔记

784. 字母大小写全排列 - 力扣&#xff08;LeetCode&#xff09; 给定一个字符串 s &#xff0c;通过将字符串 s 中的每个字母转变大小写&#xff0c;我们可以获得一个新的字符串。 返回 所有可能得到的字符串集合 。以 任意顺序 返回输出 示例 1&#xff1a; 输入&#xf…

leetcode24. 两两交换链表中的节点

题目描述 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4] 输出&#…

小程序面试总结

简单描述下微信小程序的相关文件类型 微信小程序主要涉及以下几种文件类型&#xff1a; JSON 文件&#xff08;.json&#xff09;&#xff1a; 用于描述小程序的配置信息&#xff0c;比如全局配置、页面路径、窗口样式等。WXML 文件&#xff08;.wxml&#xff09;&#xff1a…

MySQL的事务以及springboot中如何使用事务

事务的四大特性&#xff1a; 概念&#xff1a; 事务 是一组操作的集合&#xff0c;它是不可分割的工作单元。事务会把所有操作作为一个整体&#xff0c;一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 注意&#xff1a; 默认MySQ…

sylar高性能服务器-配置(P10-p11)代码解析+调试分析

文章目录 p9&#xff1a;配置模块搭建一、ConfigvarBase二、ConfigVar三、Config四、小结 p10&#xff1a;YAML的使用一、安装yaml-cpp二、使用yaml-cpp三、代码解析 P11&#xff1a;YAML与日志的整合一、方法函数二、代码调试三、test_config结果四、小结 p9&#xff1a;配置模…

18、责任链模式(Chain of Responsibility Pattern)

责任链模式&#xff0c;是用于避免请求发送者与多个请求处理者耦合在一起&#xff0c;让所有请求的处理者持有下一个对象的引用&#xff0c;从而将请求串联成一条链&#xff0c;在有请求发生时&#xff0c;可将请求沿着这条链传递&#xff0c;直到遇到该对象的处理器。用户只需…

华为或荣耀手机禁止强制升级鸿蒙系统的终极方法

需要有数据传输的usb线.打开usb调试模式. 进这个链接下载华为ADB一键卸载VS重装软件 按里面的视频说明,输入88 然后回车即可 https://download.csdn.net/download/viqecel/12161462

throw 用作异常规范

throw 用作异常规范 throw 关键字除了可以用在函数体中抛出异常&#xff0c;还可以用在函数头和函数体之间&#xff0c;指明当前函数能够抛出的异常类型&#xff0c;这称为异常规范&#xff08;Exception specification&#xff09;&#xff0c;有些教程也称为异常指示符或异常…

SVN版本回退

文章目录 SVN版本回退 SVN版本回退 一、revert to this version和revert to this version的区别&#xff1a; 基于4674版本执行"revert to this version"操作效果&#xff1a; 基于4674版本执行"revert changes from this version"操作效果&#xff1…

梯形速度规划算法原理及代码

梯形速度规划的原理&#xff1a;梯形速度规划算法 对应的代码如下&#xff1a; #pragma once #include <cmath> #include <iostream> #include <vector> struct SpeedPoint {SpeedPoint() {s 0;speed 0;t 0;}double s; // mdouble speed; // m/sdo…

推荐开源项目-网络应用协议框架Socket.D

基于事件和语义消息流的网络应用协议 Socket.D 0 代码仓库地址1 该开源项目特点2 项目结构3 核心理念-协议帧Frame4 结束语 0 代码仓库地址 https://gitee.com/noear/socketd 1 该开源项目特点 代码风格优雅文档说明齐全测试用例非常人性化上手快&#xff0c;代码用例很多代…

JDBC链接MySQL,实现对Goods表的增删改查并封装JDBC

项目目录结构 数据库配置 1.创建goods表 2.创建goods实体 package homework.MyJDBC;public class Goods {private int id;private String gId;private String gName;private float gPrice;private int gNum;public int getId() {return id;}public void setId(int id) {this.i…

Qt之自定义QToolTip,去掉显示动画和隐藏延时

一.效果 先来看看Qt原生QToolTip的缺点: 1.当提示内容无变化时,弹窗无法移动。只能先传个空字符串强制弹窗隐藏,然后在新位置再传个字符串。 If the text is the same as the currently shown tooltip, the tip will not move. You can force moving by first hiding the t…

晶圆划片机助力LED陶瓷基板高效切割:科技提升产业新高度

博捷芯半导体划片机在LED陶瓷基板制造领域&#xff0c;晶圆划片机作为一种先进的切割工具&#xff0c;正在为提升产业效率和产品质量发挥重要作用。通过精确的切割工艺&#xff0c;晶圆划片机将LED陶瓷基板高效地切割成独立的芯片&#xff0c;为LED产业的快速发展提供了有力支持…

ViT:视觉 Transformer

ViT&#xff1a;视觉 Transformer 网络结构Transformer 编码器MLP 头CNN 和 Transformer 网络结构 Transformer 的优势&#xff1a;注意力机制相当于一个多标签检索系统&#xff0c;位置嵌入能知道每个单词的位置&#xff0c;而且适合并行。 尝试把 Transformer 迁移到视觉领…

SpringBoot 面试题和答案,最新面经

覆盖了SpringBoot的方方面面。问题从SpringBoot的自动配置和起步依赖开始&#xff0c;接着深入到环境配置&#xff0c;再到异常处理、定时任务和异步处理等实用技能。每一个问题都能让你受到SpringBoot的强大和灵活性。 1. SpringBoot中核心特性有哪些&#xff1f; SpringBoo…

鸿蒙(HarmonyOS)应用开发——简易版轮播图

简述 轮播图在应用中&#xff0c;已经很常见的展现方式。像uniapp、iview&#xff0c;viewUI等前端组件框架&#xff0c;都提供了轮播图组件。那么在harmonyOS中&#xff0c;如果要实现轮播&#xff0c;我们是使用swiper 组件 swiper组件 swiper 组件是一种容器组件。它提供…

jmeter接口自动化测试通过csv文件读取用例并执行测试

最近在公司测试中经常使用jmeter这个工具进行接口自动化&#xff0c;简单记录下~ 一、在csv文件中编写好用例 首先在csv文件首行填写相关参数&#xff08;可根据具体情况而定&#xff09;并编写测试用例。脚本可通过优先级参数控制执行哪些接口&#xff0c;通过端口参数同时执…

【WebRTC】【Unity】Unity Web RTC1-Unity中简单实现远程画面

【项目资源下载】 本篇配套直接打开可用的项目包地址&#xff0c;欢迎下载&#xff1a; https://download.csdn.net/download/weixin_41697242/88612084 【背景】 想要在Unity中实现实时远程桌面&#xff0c;找到了Render Streaming这个手段&#xff0c;本篇介绍相应的使用方…

CSS层叠样式表一

1&#xff0c;CSS简介 1.1 CSS-网页的美容师 CSS的主要使用场景就是美化网页&#xff0c;布局页面的 CSS也是一种标记语言 CSS主要用于设置HTML页面中的文本内容&#xff08;字体&#xff0c;大小&#xff0c;对齐方式等&#xff09;、图片的外形&#xff08;宽高、边框样式…