Указатель указывает на адрес памяти.При объявлении и инициализации int *ptr=x;
, ptr
назначается адрес памяти, с которого первый элемент x
начинается в памяти.Таким образом, если x
состоит из трех 4-байтовых целых чисел, которые содержат десятичные значения 10, 20, 30 и младший байтовый адрес первого целого числа начинается с адреса 0x1010, ptr
будет присвоено значение 0x1010, а адреса памятизанятое x
будет выглядеть как
Addr |1010|1011|1012|1013|1014|1015|1016|1017|1018|1019|101A|101B|
+====+====+====+====+====+====+====+====+====+====+====+====+
Val | 0A | 00 | 00 | 00 | 14 | 00 | 00 | 00 | 1E | 00 | 00 | 00 |
+====+====+====+====+====+====+====+====+====+====+====+====+
(все адреса и значения, указанные выше, отображаются в шестнадцатеричном формате)
В приведенном выше примере используется архитектура с прямым порядком байтов, например Intel x86где младший байт многобайтового целого числа сохраняется в младшем адресе.(Другие порядки многобайтовых целых чисел в памяти используются на других архитектурах, но я не буду здесь их рассматривать).
Надеюсь, это поможет.