Мягкий вопрос - адрес памяти последнего байта, выделенного из массива - PullRequest
0 голосов
/ 06 июня 2019

Переменная int A[10] выделяется из шестнадцатеричного адреса DDDD04BA.Я хотел бы найти HEX-адрес последнего байта, выделенного из массива.Почему мы вычитаем 1 из: DDDD04BA+28=DDDD04E2, DDDD04E2-1=DDDD04E1?Кроме того, почему HEX-адрес первого байта A[8] равен DDDD.04BA+32=DDDD04DA, не должен ли он быть +36, поскольку он начинается с A[0]?

1 Ответ

0 голосов
/ 06 июня 2019

Адрес первого элемента массива равен &A[0]=DDDD04BA
Адрес элемента A [1] получается путем добавления 4 к этому значению
Адрес элемента A [i] равен & A [0] + 4 * i
И последний элемент A [9] находится по адресу & A [0] + 4 * 9 = & A [0] + 36 = & A [0] + 0x24

A [9] состоит из 4байт.Сначала по адресу & A [9] и последним по адресу & A [9] + 3
Мы получаем результат 0xDDDD04BA + 0x24 + 3 = DDDD04E1

По той же причине & A [8] = & A [0] + 8 * 4 = 0xDDDD04DA

Не забывайте, что массивы с индексом 0, поэтому, чтобы найти адрес элемента i, вам просто нужно добавить i * sizeof (array_element) к базовому адресу.

...