结构体 & 枚举 在嵌入式开发中的巧妙使用

2023-11-02

结构体 & 枚举:

        提到结构体相信大家并不陌生,结构体顾名思义,是一种体(各种变量)的集合,方便了我们对于数据的管理和操作,在嵌入式开发中是必不可少要掌握的技能。那么我就通过举例子的方式给大家讲一下怎样使用结构体。

第一种(普通式):

 我定义一个学生(Student 结构体):

①、不使用指针创建变量:

struct Student{
    int age;
    char name[20];
};

int main()
{
    struct Student s1;
    s1.age = 20;//年龄
    strcpy(s1.name, "张三");
    printf("%s -- %d ", s1.name, s1.age);
    return 0;
}

②、使用指针创建变量

struct Student{
    int age;
    char name[20];
};

int main()
{
    struct Student s;
    struct Student *s1 = &s;
    s1->age = 20;//年龄
    strcpy(s1->name, "张三");
    printf("%s -- %d", s1->name, s1->age);
    return 0;
}

通时这个地方再加深我们对malloc函数的学习,可以这样写代码:

struct Student{
    int age;
    char name[20];
};

int main()
{
    struct Student *s1 = (struct Student *)malloc(sizeof(struct Student));
    s1->age = 20;//年龄
    strcpy(s1->name, "张三");
    printf("%s -- %d", s1->name, s1->age);
    free(s1);
    return 0;
}

 第二种(typedef 重定义型)

        我只写一种,指针的自己尝试写一写

typedef struct{
    int age;
    char name[20];
}Student;

int main()
{
    Student s1;
    s1.age = 20;//年龄
    strcpy(s1.name, "张三");
    printf("%s -- %d", s1.name, s1.age);
    return 0;
}

接下来我写个函数将 结构体枚举都包括在里面,辅助进行学习:

typedef enum{
    A = 249,
    B,
}Test;
typedef struct{
    int age;
    char name[20];
}Student;
void test(Student *s1, Test s2){
    printf("我叫-%s-,我今年-%d-岁, 我不是-%d-, 我很牛B不是吗?\n",
           s1->name, s1->age, s2);
}
int main()
{
    Student s1;
    s1.age = 20;//年龄
    strcpy(s1.name, "张三");
    test(&s1, B);
    return 0;
}

其实这样的用法,在我们嵌入式开发中用到的非常多,我们只需记得,当我们在一个项目中有很多不同类型的变量要去处理时,我们可以将他们放到结构体里面,这样也方便我们去管理,当牵扯到多个选项供我们去选择时,我们能联想到使用枚举对其进行封装你看这样是不是特别有意思了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

结构体 & 枚举 在嵌入式开发中的巧妙使用 的相关文章

随机推荐

  • 程序访问的局部性原理

    程序访问的局部性原理 程序访问的局部性原理包括时间局部性和空间局部性 时间局部性是指在最近的未来要用到的信息 很可能是现在正在使用的信息 因为程序中存在循环 空间局部性是指在最近的未来要用到的信息 很可能与现在正在使用的信息在存储空间上是连
  • OD华为机试 32

    组成最大数 描述 小组中每位都有一张卡片 卡片上是6位内的正整数 将卡片连起来可以组成多种数字 计算组成的最大数字 输入描述 号分割的多个正整数字符串 不需要考虑非数字异常情况 小组最多25个人 输出描述 最大的数字字符串 示例一 输入 2
  • elk 笔记15--mapping

    elk 笔记15 mapping 1 mapping 简介 1 1 什么是mapping 1 2 为何移除多type 2 mapping 数据类型 3 mapping 元字段 4 mapping 参数 5 动态 mapping 6 常见 m
  • 3.Unity Shader 基础

    目录 一对好兄弟 材质和Unity Shader Unity中shader ShaerLab Unity Shader 的结构 1 创建 2 Properties 3 SubShader 状态设置 RenderSetup SubShader
  • hive永久注册udf函数小例子

    来源 我是码农 转载请保留出处和链接 本文链接 http www 54manong com id 1217 注册UDF函数 1 helloUDF java中package信息需要修改 代码如下 package com maven udf p
  • ChatGLM2_6b安装

    Chatglm2 6b安装 一 安装要求 1 硬件 能否使用 或者以什么模式使用主要取决于显卡的显存 2 能否使用AMD显卡 可以 甚至可以使用CPU 但是需要降低精度 以CPU模式运行大概需要32GB 内存 二 工程与下载 官方路径 工程
  • 遇到问题之-yum update无法连接镜像问题解决

    yumupdate出现无法解析的错误 查看yum源设置也正确 然后查看本机DNS无法解析 通过防火墙开放DNS端口解决 然后还是无法yum安装 查看另外一台服务器和故障机配置都相同 但是yum正常 发现两者不同的是load的mirror是不
  • 物联网mqtt消息格式定义示例

    物联网mqtt消息格式定义示例 物联网mqtt通信流程 消息定义 应用下发到云 POST https 云服务器ip iot product id device id cmd Content Type application json X A
  • Spring MVC应用的开发步骤

    Spring MVC应用的开发步骤 Spring MVC应用的开发步骤 如果以异步方式提交请求 利用XML配置文件 配置控制器类 Spring MVC应用的开发步骤 下面简单介绍Spring MVC应用的开发步骤 在web xml文件中配置
  • Frida hook Java层

    往期推荐 frida环境安装 Xposed框架安装 使用及插件开发 HOOK startActivity HOOK框架 动态代理 需要相关资料的朋友 可以 加入此处即可打包获取 需要对在进程外传递的消息进行拦截处理就必须采取一种称为HOOK
  • Hexo博客开发之——七牛云图片批量下载

    一 前言 基于hexo Github搭建的静态博客 图片等资源的存储是一个问题 之前考虑过图片保存本地文件夹 图床 qiniu 微博 等 但是七牛存储的图片会有一些问题 使得我不得不考虑领寻图片等资源的存储问题 1 1 七牛图片存储的问题
  • UE4 加载流关卡(StreamingLevel)

    主要内容 本文主要讲解流关卡的加载卸载以及使用流关卡的好处 使用流关卡的好处在于利于多人协同合作 例如使用SVN进行项目开发时 各自上传或修改各自负责的关卡可以互不干扰 实现步骤 1 新建一个默认的主关卡和两个空的关卡 2 在主关卡里把两个
  • 解决 Ubuntu18.10 无法安装 Nvidia-docker2

    2023年5月18日更新 nvidia 原 github io 网页已废弃 更新了新的主页链接 2022年8月10日更新 很高兴看到这篇文章能够帮助一些同仁 在此更新一下 根据 https nvidia github io nvidia d
  • iOS核心动画CoreAnimation系统进阶(赛贝尔曲线-菜单侧滑动画拆分动画详解)

    我们知道动画是基于绘制的 多次绘制贝塞尔的过程就会形成动画 流畅的动画效果会给用户带来不一样的使用体验 下面我们就让App开发中经常使用到的侧滑动画进行拆分详解 效果图如下 为侧滑动画封装一个slideMenuView 绘制侧滑动画需要下面
  • Raft协议处理各种failover情况

    Raft协议处理各种failover情况 Raft 协议的易理解性描述 虽然 Raft 的论文比 Paxos 简单版论文还容易读了 但论文依然发散的比较多 相对冗长 读完后掩卷沉思觉得还是整理一下才会更牢靠 变成真正属于自己的 这里我就借助
  • MYSQL数据库服务磁盘IO高问题分析与优化

    压力测试过程中 如果因为资源使用瓶颈等问题引发最直接性能问题是业务交易响应时间偏大 TPS逐渐降低等 而问题定位分析通常情况下 最优先排查的是监控服务器资源利用率 例如先用TOP 或者nmon等查看CPU 内存使用情况 然后在排查IO问题
  • java学生信息管理系统_毕业设计项目实例(含源码毕业论文)

    一 面向人群 学校的学生信息管理人员以及老师和学生 二 总体功能描述 本系统利用Java Web技术实现了学生信息管理系统 具有简单的学生信息管理功能 实现了以下功能模块 院系信息管理模块 学生信息管理模块 课程信息管理模块 成绩管理模块
  • http常见的特殊字符转义

    Http协议真的好严格 特殊字符诸如 等都会被当做转义字符处理 这样的话请求路径的参数就不对了 所以特殊字符要如下处理 空格 用 20代替 用 22代替 用 23代替 用 25代替 用 26代替 用 28代替 用 29代替 用 2B代替 用
  • python网页点击操作

    你好 在 Python 中 你可以使用 Selenium 库来进行网页点击操作 首先 你需要安装 Selenium pipinstall selenium 然后 你可以使用以下代码来打开浏览器并访问网页 from selenium impo
  • 结构体 & 枚举 在嵌入式开发中的巧妙使用

    结构体 枚举 提到结构体相信大家并不陌生 结构体顾名思义 是一种体 各种变量 的集合 方便了我们对于数据的管理和操作 在嵌入式开发中是必不可少要掌握的技能 那么我就通过举例子的方式给大家讲一下怎样使用结构体 第一种 普通式 我定义一个学生