我可以访问指针作为一个二维数组在C



假设我有一个指向int的指针:

int *p = somefunc();

我知道它指向25个整数,逻辑上排列在5x5的网格中。我可以这样访问一个元素:

p[y*5+x]

或:

*(p+y*5+x)

是否有办法访问它作为一个二维数组?

a[y][x]

是:

int (*a)[5] = (int (*)[5])p;

我会做一个简单的函数来做到这一点:

int at(int * p, int x, int y)
{
    return p[y*5+x]
}

您可以为不太具体的表宽度添加另一个参数(即除了5),但这就是我通常的做法

相关内容

  • 没有找到相关文章