基本指针,数组,结构体

记录下自己比较灵活比较实用的用法。

指针在函数中的数值传递

mpu6050读取的一个例子:

void GetData(T_float_angle *dmp_angle,T_short_xyz *gyr,T_short_xyz *acc)

{
    if(mpu_dmp_get_data(&dmp_angle->pit,&dmp_angle->rol,&dmp_angle->yaw)==0)
    {
        mpu6050_GetGyroData(&gyr->x,&gyr->y,&gyr->z);
        mpu6050_GetAccData(&acc->x,&acc->y,&acc->z);
    }
}

下面这样调用它(变量已在前面定义):

void DataRefresh(void)
{
    static u8 rc_cnt=0;
    GetData(&MPU_Angle,&MPU_Gyr,&MPU_Acc); //在此引用
    while(ERROR!=NRF_Rx_Dat(RX_BUF));
    DataReceiveTransfer(RX_BUF,32,&Rc_in);
    Rc_Fun(&Rc_in,FLY_Lock);
}

这样使用的优势在于可以减少变量的定义,把自己需要用到的变量在调用函数的同时讲变量进行不同函数之间的传递,减少中间变量的定义,使得思路清晰,方便。

指针与数组的关系

举一个例子:

void usart1_SendBuf(u8 *buf,u8 len)
{
    int i;
    for(i=0;i<len;i++)
        usart1_SendChar(*(buf+i));   //可以换成usart1_SendChar(*buf); buf++;
}

用过调用
u8 code[5]={1,2,3,4,5}​;
usart1_SendBuf​(code,5);
可以实现。

这说明​数组名相当于一个指针,同时数组名所在的地址就是指向指针的首个地址。

结构体的定义​

一个典型的例子

typedef struct  int16_xyz{
                       int16_t X;
                       int16_t Y;
                       int16_t Z;}T_int16_xyz;

通过struct定义了结构体​名为int16_xyz,里面包含了int16_t X,Y,Z三个变量,为了方便定义用了typedef方便这个结构体声明类型T_int16_xyz。

​只需调用T_int16_xyz GYRO;​
这时GYRO中包含了X,Y,Z三个整型变量。​

使用结构体会使得结构清晰,提高代码的可读性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值