博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

内存buffer转换为多维数组访问

Posted on 2020-08-18 13:50  brightmind  阅读(284)  评论(0编辑  收藏  举报

一段内存按照多维数组或者矩阵的形式去访问,定义多维数组指针,代码看起来清晰简洁。

int32_t reshape(uint8_t *buf, uint32_t m, uint32_t n)
{
    typedef uint8_t (*dim2)[m][n];
    dim2 p = buf;
    printf("buf=%p, %p, m=%d, n=%d\n", buf, p, m, n);
    printf("buf: %x, %x, %x, %x\n",&buf[0], &buf[1], &buf[2], &buf[3]);
    printf("(*p)[x][y]: %x, %x, %x, %x\n", (*p)[0][0], (*p)[1][0], (*p)[2][0], (*p)[3][0]);
  return 0;
}
int main()
{
    uint8_t buf[] = {1,2,3,4,5,6,7,8};
    reshape(buf, 4, 2);
    return 0;
}