一個結構體的雙指針和一個結構體的數組指針使用例子(都可以)

1 結構體的數組指針

DataFormatStr g_out_data_buf[2];
DataFormatStr g_int_data_buf[20];

typedef struct
{
    UINT32 di;
    UINT32 len;
    UINT8 buf[256];
}DataFormatStr;

/**    
  @brief    電錶數據格式轉集中器數據格式
  @param    [in] UINT32 orignal_id - 集中器原始命令id
  @param    [in] DataFormatStr *p_in_data - 輸入電錶數據結構體數組指針
  @param    [in] UINT8 in_num - 輸入電錶數據個數
  @param    [out] DataFormatStr *out_data_buf - 輸出 轉化後的集中器數據格式
  @return   返回轉化生成的電錶數據個數,-1:轉化失敗
  @warning  
*/
INT32 format_csg645_2_dc(UINT32 orignal_id,DataFormatStr *p_in_data, UINT8 in_num, DataFormatStr *out_data_buf );

 dc_data_num = format_csg645_2_dc(tem_di, g_int_data_buf, meter_di_num, g_out_data_buf);

 if(dc_data_num >0){
     for (i=0;i<dc_data_num ;i++)

  什麼 = g_out_data_buf[i].di; 等等

}

2 結構體雙指針

/** 參數更新數據描述結構 */
typedef struct
{
    UINT32 di;
    TerminalDataStruct pdata;
}IdTerminalData;

IdTerminalData* pid_data = NULL;
    paratasknum=db_read_parameter(P_ID_RDMETER,Pn,DI,BlockFlag,&pid_data);

 if(paratasknum>0){
     for (i=0;i<paratasknum;i++)

  什麼 = pid_data[i].di; 等等

}

/**
 * @brief 從/MEDIA/RAM/參數數據庫讀取參數
 * @param [in] UINT8 task_id 進程id序號,爲0-31的數,每個進程佔一個號,不能重複
 * @param [in] UINT16 pn  待讀取測量點號
 * @param [in] UINT32 di  待讀取對象數據標識
 * @param [in] blockFlag 標識DI是否爲塊,0-標識DI非塊;1-DI0爲塊結構;2-DI1爲塊結構;3-DI2爲塊結構;4-DI3爲塊結構
 * @param [out] IdTerminalData **ppdata 輸出讀取到的參數,可能是多個參數
 * @return >0:成功,值爲參數個數;<0:錯誤碼,錯誤碼見dberrordef.h。
 * @warning 輸出的參數爲動態分配空間,使用完數據後需要調用db_free_idTerminalData(&ppdata,num)釋放ppdata的空間!!!
 */
DBPARAM_INTERFACE_API INT32 db_read_parameter(UINT8 task_id, UINT16 pn, UINT32 di, UINT8 blockFlag, IdTerminalData **ppdata);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章