在C中传递2D数组指针

在C中传递2D数组指针,c,arrays,pointers,reference,2d,C,Arrays,Pointers,Reference,2d,关于这个话题有很多问题,但似乎没有一个能回答我的问题: -我想建立一种“数组或数组”,就像一个矩阵。这是我的例子 int A[Things][Elements]; int B[Things][Elements]; int C[Things][Elements]; for (uint8_t i=0; i < Things; i++) myFunct(C[i], A[i], B[i], ....); /******************/ /***** Where: *****/

关于这个话题有很多问题,但似乎没有一个能回答我的问题: -我想建立一种“数组或数组”,就像一个矩阵。这是我的例子

int A[Things][Elements];
int B[Things][Elements];
int C[Things][Elements];

for (uint8_t i=0; i < Things; i++)
    myFunct(C[i], A[i], B[i], ....);

/******************/
/***** Where: *****/

void myFunct(int *O, int* iA, int* iB, ....)
{
    for (uint8_t j=0; j < Elements; j++)
        O[j] = iA[j] + iB[j];
}

inta[事物][元素];
int B[事物][元素];
int C[事物][元素];
for(uint8_t i=0;i
我知道上面的代码毫无意义,但它只是一个超级简单的例子,说明了我要做的事情。 当我进行测试时,我发现第一个(I=0)是正确的,然后下一个(I>0)是错误的。 我可能在定义myFunct()的输入时犯了一个错误,但我不明白是什么。我知道我可以使用
I*Elements+j
和指针,但我希望有一次使用更可读的代码

谢谢你的回答,
Ev3.

嗯。。。如果
事物
元素
是真正的常量(
#define
),则此代码似乎没有问题。换言之,这就是我们坚持的原因:问题可能在于你没有展示的部分……是的,它们是用#define定义的。知道代码是正确的,并且不是指针使用的问题,我进行了一次深入的调试,发现问题是由于浮点除法近似中的一个巧合(不幸且罕见)。谢谢你的回答嗯。。。如果
事物
元素
是真正的常量(
#define
),则此代码似乎没有问题。换言之,这就是我们坚持的原因:问题可能在于你没有展示的部分……是的,它们是用#define定义的。知道代码是正确的,并且不是指针使用的问题,我进行了一次深入的调试,发现问题是由于浮点除法近似中的一个巧合(不幸且罕见)。谢谢你的回答