我有兩個二維數組:如何比較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 [] [])'的要求限制了我可以用作參數的要求。在這種情況下,它需要數組本身作爲參數 –