zoukankan      html  css  js  c++  java
  • C ~ 指针零散记录

    2016.10.11 一个记录

    void MB_float_u16(float f,uint16_t *a,uint16_t *b)
    {
      uint8_t *fp;     ①
      uint8_t *ap;     ②
      ap=(uint8_t*)a   ③
      fp=(uint8_t*)&f; ④
      ap[1]=fp[3];      ⑤
      ap[0]=fp[2];      ⑥
      ap=(uint8_t*)b;   ⑦
      ap[1]=fp[1];      ⑧
      ap[0]=fp[0];      ⑨
    }
    uint8_t *fp = uint8_t fp[]   两者等价  数组没有声明元素个数 则根据数组的使用自动匹配元素个数
    

    32位系统中指针变量都占4个字节 只有在提取数据的时候才按照类型来分配。

    fp=(uint8_t*)&f; 这里只是指向相同的地址 和数据

    1、2:创建两个指针变量 fp ap

    3: ap指向a  因为ap是uint8_t 类型的 所以强制转换 才能赋值

    4:相同道理

    5:实参 a地址的内容 a[1]等于浮点数 f (占四字节)最后一个字节的内容

    6:实参 a地址的内容 a[0]等于浮点数 f 第三个字节的内容

    7:将ap指向实参b

    8:实参b地址的内容 b[1]等于浮点数 f 第二个字节的内容

    9:实参b地址的内容 b[0]等于浮点数 f 第一个字节的内容

     

    2016.10.11关于结构的一个记录

    typedef struct 定义的结构体 在新定义变量时可省略struct ;直接使用struct 定义的结构体在声明新的结构体变量时不能省略struct

     一个应用

     1、定义一个结构体类型

    typedef struct  TStest 
    {
      uint8_t (*Init)(uint8_t para);
      uint8_t  *data;
    }Test_Struct

    注:如果这个结构只用一次可以不使用 结构体名TStest 如果多次使用的话加变量名

        这里用了typedef 这样就可以用Test_Struct 代替struct  TStest  了,使用typedef来命名一个结构体类型时,可以省略结构标记。

    2、定义一个Test_Struct类型的结构体变量 并初始化它

    Test_Struct  UserType =
    {
      user_func;
      buff;
    }

    这里的user_func 相对应的函数

    uint8_t user_func(uint8_t para)
    {
    }

    buff 对应相应的声明的变量  uint8_t  buff[10];

    3、调用时 定义一个Test_Struct类型的结构体指针 指向刚定义的结构体变量

    Test_Struct * UserA = &UserType;
    User -> Init(2);  UserA -> Data[0]=a; 

    这样可以把一类的函数或变量归为一类 。

  • 相关阅读:
    .net Core使用EFCore连接数据库
    前端实践项目(二)webpack生成html和外部引用
    前端实践项目(一)使用webpack进行打包编译
    消息队列的模式
    消息队列的应用场景
    .Net EasyNetQ的使用
    .Net中简单地使用RabbitMQ消息队列
    C# 虚函数virtual的使用之二
    C#之System.Object
    .Net EntityFramework(EF) CodeFirst模式
  • 原文地址:https://www.cnblogs.com/einstein-2014731/p/5948949.html
Copyright © 2011-2022 走看看