2

如果我有这个数组:

#define a 10
#define b 20

int foo[a][b];

我可以得到这样的指针foo[i][j]

int *pointerToElement(i, j)
{
    return *foo + i * b + j;
}

*foo[i][j]使用索引符号 ( )没有更简单的方法吗?

4

2 回答 2

4

这个怎么样:

return & foo[i][j];
于 2012-11-22T15:14:48.953 回答
2

你的方法不对:

*foo + i * b + j

这会取消引用指针foo并为其值添加一些内容。你想要的是:

foo + i * b + j

而且由于索引符号也取消引用指针,因此您必须再次引用它:

&foo[i][j]
于 2012-11-22T15:16:38.423 回答