Рассчитать шаг (расстояние в байтах) для циклического перебора массивов основных рядов
Я понимаю основную концепцию шага (расстояние между двумя последовательными обращениями к массиву). Тем не менее, когда мне задают вопрос о том, как обстоят дела между различными типами циклов, обращающихся к одному и тому же массиву, я не уверен в том, каков точный ответ.
Например, я не уверен, как рассчитать доступ к массиву во вложенных циклах. Вот два примера вопросов, на которых я застрял:
Функция А:
int i, j, k;
for (i = 0; i < MSIZE; i++) {
for (j = 0; j < MSIZE; j++) {
for (k = 0; k < MSIZE; k++) {
sum = sum + (array_a[i][k] * array_b[k][j]);
}
array_r[i][j] = sum;
}
}
* А. Каков шаг (в байтах) обращений к array_a?
б. Каков шаг (в байтах) обращений к array_b?*
Функция Б
int i, j, k;
for (i = 0; i < MSIZE; i++) {
for (k = 0; k < MSIZE; k++) {
for (j = 0; j < MSIZE; j++) {
array_r[i][j] = array_r[i][j]+ (array_a[i][k] * array_b[k][j]
}
}
}
* А. Каков шаг (в байтах) обращений к array_a?
б. Каков шаг (в байтах) обращений к array_b?*
=======================
Выложите мое понимание вопросов здесь:
В функции A к массиву _a обращаются по усмотрению (поскольку k является внутренним циклом, к массиву _a обращаются аналогично array_a [i] [k], array_a [i] [k + 1], array_a [i] [k + 2], поэтому элементы извлекаются всегда рядом друг с другом). array_b переходит от столбца к столбцу (потому что array_b [k] [j], array_b [k + 1] [j], array_b [k + 2] [j]).
Таким образом, ответы для функции А должны быть:
а. Каков шаг (в байтах) обращений к array_a?
Ответ: 4 байта (поскольку целое число обычно составляет 4 байта, то есть расстояние между двумя последовательными целыми числами)
б. Каков шаг (в байтах) обращений к array_b?
Ответ: MSIZE x 4 байта (Учебник также отметил MSIZE = 500, поэтому он должен быть 2000 байтов)
В функции B к array_a и array_b обращаются случайным образом. Таким образом, их шаг составляет 4 байта.
Функция Б
а. Каков шаг (в байтах) обращений к array_a?
Ответ: 4 байта
б. Каков шаг (в байтах) обращений к array_b?
Ответ: 4 байта