全部。我有一個有趣的問題,由我的C++教授給我提出。它顯然也用於一些編程工作面試。C++:使一個矩陣指向另一個
這裏的情況。我有一個整型的的二維陣列(矩陣):
int array1[][2] = {{11, 12}, {21, 22}};
我想創建第二二維陣列,數組2,它指向該第一陣列。也就是說,他們會在記憶中佔據相同的空間。
顯而易見的解決方案是使用指針。所以,我宣佈array2是這樣的:
int (*array2)[2][2];
array2 = &array1;
這似乎工作。現在,這是抓住。我想從array1中減去11,但通過引用array2來完成。這裏是什麼,我試圖完成的代碼:
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
// Trying to do the equivalent of this:
array1[i][j] -= 11;
}
}
我曾嘗試在身體下面的內部for循環,均無功而返:
// Second row not affected
*(array2[i][j]) -= 11;
// Second row not affected
*(*(array2[i]) + j) -= 11;
// incompatible types in assignment of `int' to `int[2]'
*(*(array2 + i) + j) -= 11;
任何想法?我懷疑有些事情很簡單,我只是沒有到達這裏。
謝謝!
左邊的灰色標記第二個解決方案的問題是,我不能將array2傳遞給函數,而不是array1。另外,我還沒有看到聲明數組時使用的第一種語法;我甚至不知道我能做到這一點。 –
傳遞給函數的@Karl是相同的:'f(int a [] [2],int size)'將接受'array1'和'array2'的任一版本 – Cubbi
抱歉,你是對的。按照我最初設置的方式,您必須在傳遞數組時解引用數組:f(* array2,2)。如果你使用任何一種解決方案,你都不會。那是我遇到錯誤的地方。 –