2012-02-01 50 views
1

讓說我有一個像將C多維數組

int a[10][10] 
int b[10][10] 

void arrayCopy(int* a, int* b, int size){ 
    memcpy(b, a, size); 
} 

int main(){ 
    a[0][0] = 13; 
    a[0][1] = 17; 
    "and so on..." 

    arraycopy(&a[0][0], &b[0][0], 10); 
} 

此代碼多維數組不工作我不能所有的值從複製 - > b,其中,我做錯了什麼??

回答

3

問題在於大小。 sizeof(a)100*sizeof(int),您應該傳遞該號碼。

(您的代碼拷貝10 bytes,當你要複製100 ints

+0

謝謝你的回答,但我可以得到一個解釋爲什麼尺寸被增加了100?編輯:謝謝我在解釋之前寫的 – 2012-02-01 13:27:24

+1

@DuseanSingh 10 * 10 = 100。 – Lundin 2012-02-01 15:23:28

4

size說法是錯誤的,有幾個原因:首先,有10 * 10 = = 100元,再加上你傳遞。它memcpy()其中包括它的大小在字節和你int可能更像是4個字節。此外,它不是真的有必要寫這樣的功能,這應該足夠了:

memcpy(b, a, sizeof(a)); 
+0

那麼,我應該做一個循環嗎? – 2012-02-01 13:29:02

+0

上面代碼中的循環是由'memcpy()'完成的。它只是將一個數組的字節複製到另一個數組中,所以不需要進一步的代碼。 'sizeof(a)== sizeof(int)* 10 * 10' – FatalError 2012-02-01 13:31:27

+0

謝謝答案剛剛測試過的方式說,它的工作原理,我明白你和asaelr的意思:)謝謝 – 2012-02-01 13:32:55