我有两个二维数组:
#define MAXSIZE 10
/* ... */
int A[MAXSIZE][MAXSIZE], B[MAXSIZE][MAXSIZE];
我正在从文件中读取值:
1 1 2
2 2 -6 4 5 6
在每一行上,前两个数字是数组的行和列大小,之后有足够的(任意)值来使用这些大小填充数组。我想要做的是,在将这些值分配给数组之后,检查数组 A 和 B 的维度是否相同,以便我可以对它们进行矩阵运算(加法、标量乘法等)。
我有两个二维数组:
#define MAXSIZE 10
/* ... */
int A[MAXSIZE][MAXSIZE], B[MAXSIZE][MAXSIZE];
我正在从文件中读取值:
1 1 2
2 2 -6 4 5 6
在每一行上,前两个数字是数组的行和列大小,之后有足够的(任意)值来使用这些大小填充数组。我想要做的是,在将这些值分配给数组之后,检查数组 A 和 B 的维度是否相同,以便我可以对它们进行矩阵运算(加法、标量乘法等)。
为什么不将每行的行/列大小存储到它们的变量中?
int Arow, Acol, Brow, Bcol;
通常,这会起作用:
int Acol = sizeof(A[0]);
int Arow = sizeof(A) / Acol;
但是您的数组已初始化为固定大小。
你有没有想过使用malloc
动态分配A
和B
?
如果您只是想知道两者是否 == 大小:
#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;
}
即使您没有显式写入每个位置,矩阵,您定义它们的方式,也将是相同的大小。