Задан следующий массив arr некоторого типа type (type занимает N байт в памяти) type...

0 голосов
89 просмотров

Задан следующий массив arr некоторого типа type (type занимает N байт в памяти) type arr[14][5][2][7]; Требуется определить разницу в байтах между следующими адресами (если это возможно сделать однозначно): &arr[9][4][0][1] - &arr[5][1] Hint: если ответ зависит от размера типа type, можно в качестве ответа указать формулу с неизвестной вида: N*<число> (язык Си)


Информатика (17 баллов) | 89 просмотров
0

&arr[9][4][0][1] - &arr[5][1] - Язык С: сто способов выстрелить себе в ногу

Дан 1 ответ
0 голосов
Правильный ответ

N*323.

Адрес &arr[i][j][k][l] получается из адреса &arr[0][0][0][0] = &arr[0][0][0] = &arr[0][0] = &arr[0] = &arr[0] путем прибавления (5 * 2 * 7 * i + 2 * 7 * j + 7 * k + l) * N = (70i + 14j + 7k + l) * N байт

Тогда &arr[9][4][0][1] = &arr + 687N байт, &arr[5][1] = &arr + 364N байт, разность (687 - 364) N = 323N

(148k баллов)