Функция копирования массива - C (СИ)
Формулировка задачи:
При заданном алгоритме функция работает верно.
Если же я меняю алгоритм на следующий:
функция работает неправильно.
С чем может быть связана ошибка ?
void copy2(const double (*ar0)[COLS], double (*ar2)[COLS], int b) { int i, j; const double *pt; pt = &ar0[0][0]; for(i = 0; i < ROWS; ++i) { for(j = 0; j < COLS; ++j) { ar2[i][j] = *pt++; } } }
void copy2(const double (*ar0)[COLS], double (*ar2)[COLS], int b) { int i, j = 0; const double *pt; pt = &ar0[0][0]; for(i = 0; i < ROWS; ++i) { while(j++ < COLS) { ar2[i][j] = *pt++; } } }
Решение задачи: «Функция копирования массива»
textual
Листинг программы
while(j < COLS) { ar2[i][j++] = *pt++; }
Объяснение кода листинга программы
В данном коде выполняется копирование массива. Вот список действий:
i
иj
инициализируются нулевыми значениями.pt
указывает на первый элемент в исходном массиве.ar2
указывает на первый элемент в целевом массиве.- Пока
j
меньшеCOLS
(количество столбцов в массиве), выполняется следующее действие:ar2[i][j]
присваивается значение*pt
(первый элемент в исходном массиве).j
увеличивается на 1.pt
увеличивается на 1.
- Код возвращает
i
иj
, которые теперь указывают на следующий элемент в исходном и целевом массивах соответственно. - Если
i
меньшеROWS
(количество строк в массиве), то код возвращает к шагу 4. - Копирование массива завершено.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д