我有一部分代码是这样的(假设所有类型都是int
):
for(int i = 0; i < h; ++i)
{
for(int i = 0; i < h; ++i)
{
if(...)
{
a = B[i][j]
}
else
{
a = C[i][j]
}
}
}
我想写它,以便我只检查一次if
条件。但是,如何充分地声明指向2D数组的指针(下例中的变量D)?
if(...)
{
D = B;
}
else
{
D = C;
}
for(int i = 0; i < h; ++i)
{
for(int i = 0; i < h; ++i)
{
a = D[i][j]
}
}
答案 0 :(得分:3)
结合@MadScienceDreams的回答和@Grijesh Chauhan评论,以下似乎有效:
double A[1000][1000];
double (*B)[1000][1000] = &A;
然后访问一个值:
double a = (*B)[i][j];
答案 1 :(得分:0)
答案 2 :(得分:0)
const int w = 10;
const int h = 10;
char b[w][h];
char c[w][h];
char (&d)[w][h] = b;
assert(&b[0][0]==&d[0][0]);
(假设您使用的是2D数组而不是(更好的,imho)锯齿状数组)。
答案 3 :(得分:-1)
嗨所有人
但是上面的其他内容给出了答案,但结果代码如下int B[w][h];
int C[w][h];
int (&D)[w][h] = (any clause) ? B : C;
for(int i =0;i < w;i++)
for(int j =0;j < h;j++)
a = D[i][j];