基本指針,數(shù)組,結構體
記錄下自己比較靈活比較實用的用法。
1.指針在函數(shù)中的數(shù)值傳遞。
首先舉一個例子:
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);
}}
下面這樣調(diào)用它:(變量已在前面定義)
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);
}
這樣使用的優(yōu)勢在于可以減少變量的定義,把自己需要用到的變量在調(diào)用函數(shù)的同時講變量進行不同函數(shù)之間的傳遞,減少中間變量的定義,使得思路清晰,方便。
2.指針與數(shù)組的關系
舉個例子:
void usart1_SendBuf(u8 *buf,u8 len)
{
int i;
for(i=0;i
usart1_SendChar(*(buf+i)); //可以換成usart1_SendChar(*buf); buf++;
}
調(diào)用:
u8 code[5]={1,2,3,4,5};
usart1_SendBuf(code,5);
這說明數(shù)組名相當于一個指針,同時數(shù)組名所在的地址就是指向指針的首個地址。
3.結構體的定義
typedef struct int16_xyz{
int16_tX;
int16_tY;
int16_tZ;}T_int16_xyz;
一個典型的例子,通過struct定義了結構體名為int16_xyz,里面包含了int16_tX,Y,Z三個變量,為了方便定義用了typedef方便這個結構體聲明類型T_int16_xyz。
只需調(diào)用T_int16_xyz GYRO;
這時GYRO中包含了X,Y,Z三個整型變量。
使用結構體會使得結構清晰,提高代碼的可讀性。
|