我可以在C中将指针作为2D数组访问吗?

时间:2015-07-28 12:26:16

标签: c multidimensional-array

允许'说我有一个指向int的指针:

int *p = somefunc();

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

p[y*5+x]

或者这个:

*(p+y*5+x)

有没有办法将其作为2D数组访问?

a[y][x]

2 个答案:

答案 0 :(得分:8)

是:

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

答案 1 :(得分:1)

我做了一个简单的功能:

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

您可以为表格的较小特定宽度添加另一个参数(即其他5),但这就是我通常的做法。