2012-02-01 2 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); 
} 

Этот код не работает Я не могу скопировать все значения из -> б, где я делаю неправильно ??

ответ

3

Проблема в размере. sizeof(a) - 100*sizeof(int), и вы должны передать это число.

(Ваши копии кода 10 bytes, когда вы хотите скопировать 100 ints.

+0

Спасибо за ваш ответ, но могу ли я получить объяснение о том, почему размер умножается на 100? Редактировать: спасибо, я написал до объяснения –

+1

@DuseanSingh 10 * 10 = 100. – Lundin

4

Ваш size аргумент является неправильным по нескольким причинам. Во-первых, есть 10 * 10 == 100 элементов, плюс вы передаете .. это memcpy(), который принимает его размер в байт и ваш int, вероятно, больше, как 4 байта Кроме того, это на самом деле не надо писать такую ​​функцию Это должно хватить:

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

Итак, должен ли я сделать цикл? –

+0

Цикл в приведенном выше коде выполняется 'memcpy()'. Это просто делает байтовую копию вашего одного массива в другую, поэтому никакого дополнительного кода не требуется. 'sizeof (a) == sizeof (int) * 10 * 10' – FatalError

+0

Спасибо, что ответ просто проверен, как сказать, он работает, и я понимаю, что вы и asaelr означают :) спасибо –

Смежные вопросы