C语言 如何从结构内读取数据指针



在我的使用封闭库的 C 应用程序中,当接收操作完成时,我会收到一个回调,在这个回调中,我使用的框架是这样做的

void callbackRX(event_t ID, callbackData_t *callbackData_p){
    rxData_t *dataPacket = (rxData_t *)(callbackData_p->params.rxInfo.dataInfo);
    //...
}

callbackData_t type如下所示:

typedef struct
{
  status_t         status;     // callback status  
  union
  {   
    sync_t          rxSync;     
    rxInfo_t        rxData;    
  }params;
}callbackData_t;

rxInfo_t是这样的:

typedef struct
{
   UINT32       dataInfo;       
}rxInfo_t;

rxData_t这样的结构:

typedef struct
{
   UINT16 *data_p;  // pointer to data
}rxData_t;

现在,在我的库提供的回调中,我需要从dataPacket内读出data_p中的数据,所以我尝试这样做

void callbackRX(event_t ID, callbackData_t *callbackData_p){
    rxData_t *dataPacket = (rxData_t *)(callbackData_p->params.rxInfo.dataInfo);
    // Read first byte of data from the data pointer
    int test;
    test = dataPacket->data_p[0];

}

但是我得到的数字只是一个非常大的整数,例如 14236,我应该读出 256,因为接收的数据应该是 73 字节的大数组,从 256 开始,最多计数到 5121024 等。

我做错了什么?

您需要分配指向实际数据的指针。

例如:

typedef struct
{
   UINT16 *data_p;  // pointer to data
}rxData_t
...
  UINT16 buff[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  rxData_t my_data;
  my_data.data_p = buff;
  printf ("data[0]= %dn", my_data.data_p[0]);

最新更新