允许'说我有一个指向int的指针:
int *p = somefunc();
我知道它指向25个整数,逻辑上排列在5x5网格中。我可以用这个来访问一个元素:
p[y*5+x]
或者这个:
*(p+y*5+x)
有没有办法将其作为2D数组访问?
a[y][x]
答案 0 :(得分:8)
是:
int (*a)[5] = (int (*)[5])p;
答案 1 :(得分:1)
我做了一个简单的功能:
int at(int * p, int x, int y)
{
return p[y*5+x]
}
您可以为表格的较小特定宽度添加另一个参数(即其他5),但这就是我通常的做法。