你如何比较C中两个二维数组的维数?

时间:2013-09-25 21:29:43

标签: c arrays matrix multidimensional-array

我有两个二维数组:

#define MAXSIZE 10
/* ... */
int A[MAXSIZE][MAXSIZE], B[MAXSIZE][MAXSIZE];

我正在读取文件中的值:

1 1 2
2 2 -6 4 5 6

在每一行上,前两个数字是数组的行和列大小,之后是使用这些大小填充数组的足够(任意)值。我想要做的是,在将这些值分配给数组后,检查数组A和B的维数是否相同,这样我就可以用它们进行矩阵运算(加法,标量乘法等)。

2 个答案:

答案 0 :(得分:0)

为什么不将每行的行/列大小存储到变量中?

int Arow, Acol, Brow, Bcol;

通常,这可行:

int Acol = sizeof(A[0]);
int Arow = sizeof(A) / Acol;

但是你的数组被初始化为固定大小。

您是否考虑过使用malloc动态分配AB

答案 1 :(得分:-1)

如果你只是想知道这两个是否== size:

#define MAXSIZE 10
/* ... */
int A[MAXSIZE][MAXSIZE], B[MAXSIZE][MAXSIZE];

int main(void)
{
    int sizea = sizeof(A);
    int sizeb = sizeof(B);
    int result = (sizea == sizeb) ? (1) : (0);
    return 0;

}

即使您没有明确地写入每个位置,矩阵(您定义它们的方式)也将具有相同的大小。