c - 如何从结构中读取数据指针?

标签 c pointers struct

在我使用封闭库的 C 应用程序中,当接收操作完成时我得到一个回调,在这个回调中,我使用的框架执行此操作

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

callbackData_t 类型 如下所示:

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]= %d\n", my_data.data_p[0]);

关于c - 如何从结构中读取数据指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13674483/

相关文章:

c++ - 使用类指针与实例

c - 结构数组和 malloc [C]

c - 像 (void**)&device_array 这样的转换有什么问题?

c - C中的十六进制值除法

c - iPhone 开发人员获取不同类中 C 数组的内容

c++ - 隐式调用的结构析构函数 - 我的语法有误吗?

c - 指向结构指针的指针

c - 为什么这些构造使用前后递增的未定义行为?

c - 左值需要作为一元 ‘&’ 操作数——将函数结果作为指针传递

c - 如何使用通用 void 指针将值扫描到数组中?