【发布时间】:2014-01-31 19:11:19
【问题描述】:
我有一部分代码是这样的(假设所有类型都是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]
}
}
【问题讨论】:
-
避免二维数组。考虑一维数组要简单得多。
-
假设我现在不能:P
-
对于一维:
int(*p)[10];,对于二维:int(*p)[r][c] -
@BasileStarynkevitch 多么奇怪的建议。二维数组有什么难的?如果二维数组很好地模拟了问题,请使用二维数组。
-
@JohnKugelman 对于内存布局和语法之间的一切,语义二维数组(如锯齿状数组)和 C++ 二维数组概念之间存在很大差异。通常,C++ 2D 数组语法令人讨厌且不直观,大小恒定,并且与锯齿状数组相比几乎没有(如果有的话)性能提升。它们具有通过值传递和通过引用传递的奇怪特征......所以通常最好避免它们,恕我直言。
标签: c++ pointers multidimensional-array