Скажите пожалуйста, почему адрес
указателя на первый элемент массива точно такой же, как адрес
самого первого элемента?
Пример:
#include <iostream>
using namespace std;
int main()
{
int i[] = { 1, 2, 3 };
cout << i << endl; // Приведение имени массива к указателю на его первый элемент. Эквивалентно &i[0] или &(*i)
cout << &i << endl; // <-- Адрес указателя на первый элемент
cout << endl;
}
Запускаем:
[sergey@myhost cpp]$ g++ main.cpp && ./a.out
0xbfe11848
0xbfe11848
Как такое может быть? Ведь указатель на int и собственно int — разные обьекты и должны иметь разные адреса

Вот так:
int i = 100;
int* p = &i;
cout << p << endl;
cout << &p << endl;
Спасибо.