假设我有一个指向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),但这就是我通常的做法