1. 程式人生 > >用結構體指標做函式形參實現返回多個值(fishing_6)

用結構體指標做函式形參實現返回多個值(fishing_6)

        最近在學ST32驅動數字攝像頭OV2640的實驗,無意中遇到了函式返回多個值的情況,決定Mark一下,說不定以後就會用到,因為一般函式都是隻有一個返回值的嘛,具體如下:

        首先在標頭檔案定義結構體:

                typedef struct                {                   uint8_t Manufacture_ID1;                   uint8_t Manufacture_ID2;                       uint8_t PIDH;                       uint8_t PIDL;                        }OV2640_IDTypeDef;

        然後,函式如下,傳入的是結構體指標:

                  //讀攝像頭ID                 void OV2640_ReadID(OV2640_IDTypeDef *OV2640ID)                {                     OV2640_WriteReg(OV2640_DLMT_REG, 0x01);                          OV2640ID->Manufacture_ID1 = OV2640_ReadReg(OV2640_MIDH_REG);                     OV2640ID->Manufacture_ID2 = OV2640_ReadReg(OV2640_MIDL_REG);                     OV2640ID->PIDH = OV2640_ReadReg(OV2640_PIDH_REG);                        OV2640ID->PIDL = OV2640_ReadReg(OV2640_PIDL_REG);                      }

        最後,先定義一個同類型的結構體,結構體名為Camera_OV2640ID,然後就是函式呼叫,把輸出值傳到該結構體中:

             OV2640_IDTypeDef Camera_OV2640ID;//同類型的結構體定義

            OV2640_ReadID(&Camera_OV2640ID);//傳入實參

       因為結構體名跟陣列不一樣,不是地址,所以得加上取地址符“&”。通過呼叫函式就能實現返回多個值了,當然也可以分開寫,但用結構體來實現感覺高階點,也好看點。:)