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

Ответы 1

  • 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

  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years