如果我有这个数组:
#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]
)是否有更简单的方法?
答案 0 :(得分:4)
这个怎么样:
return & foo[i][j];
答案 1 :(得分:2)
你的方法错了:
*foo + i * b + j
取消引用指针foo
并为其值添加一些内容。你想要的是:
foo + i * b + j
由于索引表示法也取消引用指针,因此必须再次引用它:
&foo[i][j]