@htmldeveloper

Почему указатель на первый элемент массива имеет адрес, отличный от адреса этого массива?

int arr[10], *ptr;
ptr = arr;

printf("%p %p\n", &arr, &ptr);
// 0x7ffc2b3f5a30 0x7ffc2b3f5a28

printf("%p %p\n", &arr[0], &ptr[0]);
// 0x7ffc2b3f5a30 0x7ffc2b3f5a30


В первом случае адреса не равны, почему? Слева - адрес массива, который идентичен адресу &arr[0], справа - указатель туда же. Во втором же случае, когда явно указал индекс массива 0, получаю одинаковые адреса.
  • Вопрос задан
  • 271 просмотр
Решения вопроса 2
gbg
@gbg
Любые ответы на любые вопросы
В первом случае, &ptr - это адрес в памяти самого указателя ptr.
Ответ написан
Комментировать
0xD34F
@0xD34F
В первом случае адреса не равны, почему?

Потому что arr и ptr - это две разных переменных. Соответственно, они не могут занимать одну и ту же область памяти. &arr[0] "идентичен" arr, а не &arr.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы