我在一个项目中遇到了下面的代码片段,不确定如何计算变量“响应”的值。在这里我们可以看到, pic_data 保存两个一维数组,但“响应”将这两个一维数组作为二维数组访问。谁能解释一下这是如何工作的?
注意:下面的代码不是更大代码块的完整代码片段。
#define MAX 100
#define MAXBUF 100
u32 response;
u32 index;
typedef struct {
u16 flag;
u16 status;
} __attribute__ ((packed)) register;
typedef struct
{
register *rq[MAX];
u64 buf[MAXBUF];
}Data;
Data *pic_data;
void getres(Data *pic_data) {
response = *((u32*)&(pic_data->rq[index][pic_data->buf[index]]));
}