基本指针,数组,结构体
2016-02-14 11:25
281 查看
记录下自己比较灵活比较实用的用法。
下面这样调用它(变量已在前面定义):
这样使用的优势在于可以减少变量的定义,把自己需要用到的变量在调用函数的同时讲变量进行不同函数之间的传递,减少中间变量的定义,使得思路清晰,方便。
用过调用
可以实现。
这说明数组名相当于一个指针,同时数组名所在的地址就是指向指针的首个地址。
通过struct定义了结构体名为int16_xyz,里面包含了int16_t X,Y,Z三个变量,为了方便定义用了typedef方便这个结构体声明类型T_int16_xyz。
只需调用T_int16_xyz GYRO;
这时GYRO中包含了X,Y,Z三个整型变量。
使用结构体会使得结构清晰,提高代码的可读性。
指针在函数中的数值传递
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三个整型变量。
使用结构体会使得结构清晰,提高代码的可读性。
相关文章推荐
- .NET项目JAVA重构之压缩&解压缩
- (转)Linux下清理Cache方法
- IOS UITableView上添加一个view作为头部
- bad input的意义
- 说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
- IEEE 754——计算机中浮点数的表示方法
- table变色
- 移动端HTML5开发心得(转)
- js中的模块化编写思维
- 向架构师进军-->创建逻辑架构
- 谈谈对Spring IOC的理解
- 杭电2014
- React Native超棒的LayoutAnimation(布局动画)
- Java 回顾笔记2
- 2月14日--2月21日(11小时,剩3175小时)
- 详解php魔术方法(Magic methods)的使用方法
- 数据结构——图
- Win10重大更新Redstone正式版已知更新汇总(保持更新中)
- PAT B1036
- 事务