Задать вопрос
@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, получаю одинаковые адреса.
  • Вопрос задан
  • 293 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик на C++
    12 месяцев
    Далее
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Академия Эдюсон
    Разработчик игр на Unreal Engine + ИИ
    9 месяцев
    Далее
Решения вопроса 1
gbg
@gbg
Любые ответы на любые вопросы
В первом случае, &ptr - это адрес в памяти самого указателя ptr.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы