我要在Excel VBA中创建一个2D方阵
Dim Matrix(0 To Nrows, 0 To Ncols) as double然后我将它作为参数ByRef传递给一个函数库,
My_foo(Matrix(0,0))它调用C++代码。在C++代码中,我想访问矩阵以获取值并进行其他操作。为此,我将这些值读取为一维数组,因此我创建了一个索引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这样的索引,并按列访问它就足够了。我试过了,它起作用了,但它与许多博客和帖子相矛盾……
为什么?正常吗?
发布于 2017-05-12 19:48:51
虽然C/C++使用行为主的格式来表示多维数组,但对于其他语言different choices were made,Excel VBA使用列为主的格式并不奇怪,因为this forum question中也有说明。
https://stackoverflow.com/questions/43935500
复制相似问题