我有两个二维数组:如何比较C中两个二维数组的维数?
#define MAXSIZE 10
/* ... */
int A[MAXSIZE][MAXSIZE], B[MAXSIZE][MAXSIZE];
我在值从文件中读取:
1 1 2
2 2 -6 4 5 6
在每一行,前两个数字是行和列大小为阵列之后是足够的(任意)值来填充使用这些大小的数组。我想要做的是,将这些值分配给数组后,检查数组A和B的维数是否相同,以便我们可以对它们进行矩阵运算(加法,标量乘法等)。
我有两个二维数组:如何比较C中两个二维数组的维数?
#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;
}
即使你不明确写入每个位置,矩阵,你有他们所定义的方式,将是相同的尺寸。
'sizeof(A)'和'sizeof(B)'不会返回相同的结果,因为它们是用'MAXSIZE'初始化的吗? –
是 - 'int A [MAXSIZE] [MAXSIZE],B [MAXSIZE] [MAXSIZE];'保证它。那么,你真正的问题是什么呢? – ryyker
在我的例子中,A是1x1矩阵,B是2x2矩阵。我想检查A和B的尺寸是否相同(在这种情况下它们不是)。这个任务的设置方式真的很愚蠢(他们总是这样),但我必须用这种方式来处理它。如果我能提供帮助,我不会这样编写代码。 –
通过“填充数组”我假设你的意思是按行排列(至少我希望如此)。这就是说。 *您从文件*中读取尺寸。假设你将它们读入变量,是否有某些东西阻止你比较这些变量? – WhozCraig
对于此分配,程序DimCheck(int A [] [],int B [] [])'的要求限制了我可以用作参数的要求。在这种情况下,它需要数组本身作为参数 –