当前位置: 首页 > news >正文

嵌入式学习日记 16

共用体

union 共用体名
{
  成员列表; //各个变量 
}; //表示定义一个共用体类型 

注意:


1.共用体 
  初始化 --- 只能给一个值,默认是给到第一个成员变量的
2.共用体成员变量辅助 
  共用体用的数据最终存储的 --- 应该是最后一次给到的值。
  但是只能影响到 自己数据类型对应的空间中的数据
3.可以判断大小端 
4.实际用途 
  a.节省空间 
  b.进行数据转换 
  192.168.1.169 //ip本质是个 32位的数值 
  
5.共用体的大小  --是成员变量中最大的那个成员的大小

  struct stu
  {
    char name[20];
    int sno;
    float score; 
  }
  
  
  struct teacher
  {
    char name[20];
    int Tno;
    float salary; 
  }
  
  struct member
  {
    char name[20];
    int no;
    union 
    {
        float score; 
        float salary; 
    }d;
  }

  6.共用体类型可以是函数参数,也可以是函数返回值类型 
  
    共用体,结构体类型定义出来之后,
    a.定义变量
    b.定义数组
    c.定义指针 
    d.做函数参数,返回值类型 
    

枚举:


  一枚一枚列举 
  逐个列举 
  
  如果一个变量只有几种可能的值,则可以定义为枚举类型。
  所谓“枚举”是指将变量的值一一列举出来,
  变量的值只限于列举出来的值的范围内。
  
  
eg:
   //从键盘输入1~7  
   打印出对应的英文的星期 
   
   1 ~ Monday
   
   
   幻数
   魔数
   
   
声明枚举类型用enum 开头。例如:
enum weekday
{
sun,
mon,
tue,
wed,
thu,
fri,
sat
};

enum //关键词 ---枚举 

enum  枚举类型名 
{
    sun,  //名字 --- 代表一个值 --- 符号常量 
    mon,
    tue,
    wed,
    thu,
    fri,
    sat
};

1 ~ 7
 

注意:


1.枚举  提高了代码可读性 
2.枚举 本质上是int类型 
  枚举 与 整型 类型兼容 
3.不足
  因为枚举类型 --- 本质上是个整型类型,
  所以枚举类型的变量的值,并不能真正限定在指定的哪些值范围中  
4.枚举类型 
  可以做函数 形参 和 返回值 
  定义数组也可以,本质上就是整型数据 
  
  
练习: 
   无人机 
   
   无人机的状态 
   
   0 --flying 
   1 --stop
   2 --holding 
   
  从键盘输入0~2 打印无人机的状态 
-------------------------------------------------

链表


数据结构:
   数据的组织形式 (逻辑上理解的形式)
   

数组:
int a[10] = {1,2,3,4,5,6,7,8,9,10}; //连续性,有序性,单一性 


数据组织形式 ---会决定使用数据的算法 

选择排序:

for (i = 0; i < len-1; ++i)
{
    for (j = i+1; j < len; ++j)
    {
       if (a[j] < a[i])
       {
         交换
       }
    }
}

struct stu[n] = {};

n = 30


数组: //顺序表 
   优点:
     //随机访问 方便 
   缺点:
     增加数据 不方便 
     删除数据 不方便 
     
    
链表:  

链式的数据表 

狗链 
//找数据 
 
 优点:
    增加 删除数据很方便 
 缺点:
    找数据不大方便 
    
计算机中:
   计算机如何体现链式数据结构
   
   [数据1]
   
   [数据2]
   
   
   存放链式数据的结构:
   节点 
   [数据|另外一个节点指针] 
   
[数据1|指针] //节点 
[数据2|指针]
[数据3|指针]


[数据域|指针域]

学生信息

节点:
struct Node
{
//数据域 
  struct stu s;
//指针域
  struct Node *p; //指针类型 
}; 

//一个节点 
数据结构对应算法  --- 操作 

1.
2.增加数据 方便
3.删除数据 方便 

操作:


1.创建一个链表 -- 空链表 

  //有头链表  --可以更方便的处理链表
  //无头链表 
  

 c语言阶段: 
 有头 单向链表 
 
 空链表:
 特点:
  只有头节点
  并且头节点的指针域 为NULL //相当于是尾节点

strcut Node head = {0,NULL};
struct Node *p = &head;  
2.插入 
  创建一个新的节点 
  节点链接起来
  
 

//尾插 


  
  思路:
     s1.创建一个新的节点
       struct Node *pNew = malloc(sizeof(struct Node)); 
       //放在了堆区 
       //
     s2.找到尾节点 
       struct Node *p = &head;  //此时p在头节点 
       while( p->next != NULL )
       {
          p = p->next; //让p指向下一个节点 
       }
     s3.链接到尾节点后面
      p->next  = pNew;    
      pNew->next = NULL; //尾节点 
    
   void pushBack(struct Node *head)
   {
       s1.创建一个新的节点
       struct Node *pNew = malloc(sizeof(struct Node)); 
       //放在了堆区 
       //
     s2.找到尾节点 
       struct Node *p = head;  //此时p在头节点 
       while( p->next != NULL )
       {
          p = p->next; //让p指向下一个节点 
       }
     s3.链接到尾节点后面
      p->next  = pNew;    
      pNew->next = NULL; //尾节点 
   }
   
   
   int length(struct Node *head)
   {
      //统计有效节点的个数 
   }
   
 

  //头插 


    
   void pushFront(struc Node *head,int data)
   {
      //1.创建新节点
      pNew 
      //2.链接 
      pNew->next = p->next;
      p->next = pNew;
   }

http://www.lryc.cn/news/292224.html

相关文章:

  • 【Vue.js设计与实现】第一篇:框架设计概览-阅读笔记(完结)
  • 数据结构—动态查找表
  • Hbase-2.4.11_hadoop-3.1.3集群_大数据集群_SSH修改默认端口22为其他端口---记录025_大数据工作笔记0185
  • c++学习第十四讲---STL常用容器---vector容器
  • 数据结构-内部排序
  • Qt加载网页崩溃 ASSERT:“m_adapterClient“ in file ...
  • 合约短线高胜率策略-扭转乾坤指标使用说明
  • DAY37:贪心算法738
  • 计算机中的缓存与内存
  • 2.1总结
  • 探索Pyecharts:绘制多彩日历图的艺术与技巧
  • 响应标头Allow-Headers和Expose-Headers的区别和用法
  • <网络安全>《13 上网行为管理》
  • 安全通道堵塞识别摄像机
  • 2022 年全国职业院校技能大赛高职组云计算赛项试卷
  • Android开发中,Vue 3处理回退按键事件
  • three.js CSS3DRenderer、CSS3DSprite渲染HTML标签
  • 【BBF系列协议】TR369管理平台软件设计
  • 微信小程序 仿微信聊天界面
  • 中国社会科学院大学-新加坡社科大学 招生简章
  • js中继承的详解(一文读懂)
  • Android studio使用svg矢量图
  • 《Access Path Selectionin a Relational Database Management System》论文笔记
  • 【AI_Design】Midjourney学习笔记
  • 面试宝典之深谈JVM
  • idea配置tomcat
  • 【MyBatis】操作数据库——入门
  • 免费分享一套SpringBoot+Vue药店(药房)管理系统,帅呆了~~
  • 视频怎么加水印?分享两个简单的加水印的方法
  • Apache Commons Collection3.2.1反序列化分析(CC1)