Trame2771
@Trame2771

Почему arr и &arr отображаются одинаково?

Код:
int arr[] = {1, 2};
cout << arr << '\n';
cout << &arr<< '\n';
cout << *arr << '\n';
cout << *&arr << '\n';

Вывод:
0x7ffec51bafa0
0x7ffec51bafa0
1
0x7ffec51bafa0

По первым двум выводам мне кажется, что arr это pointer, указывающий на самого себя
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
@galaxy
Массивы и указатели в C все же не совсем одно и то же. Пожалуй, просто дам ссылку на SO (там даже выдержка из стандарта приведена).

Грубо говоря, переменные типа "массив" не всегда ведут себя идентично переменным типа "указатель на первый элемент массива". В частности, во всем известной конструкции:
int arr[32] = {...};
size_t N = sizeof(arr) / sizeof(arr[0]);

И в ваш случай с оператором & тоже исключение.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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