访问表示2D矩阵的1D存储阵列

时间:2017-05-12 10:27:59

标签: c++ arrays excel-vba matrix vba

我正在Excel VBA中创建2D方阵

Dim Matrix(0 To Nrows, 0 To Ncols) as double

然后我将它作为参数ByRef传递给函数库,

My_foo(Matrix(0,0))

调用C ++代码。在C ++代码中,我想访问矩阵以获取值并进行其他操作。为此,我将这些值读作1D数组,因此我创建了一个索引[R * Ncols + C],其中R和C是2D表示中的元素位置

void _stdcall My_foo(double* M, long Nrows, long Ncols){

double Value;
R = 10;
C = 0;

Value =  M[R*Ncols + C];

}

此时我希望找到具有位置(10,0)的元素,但我找到元素(0,10)。看来我的矩阵以倒列/行顺序存储。

设置像[C * Nrows + R]这样的索引就足够了,并按列访问它。我试过这个并且它有效,但它与许多博客和帖子相矛盾......

为什么呢?这是正常的吗?

0 个答案:

没有答案