Здравствуйте, Neavirc, Вы писали:
N> int i[] = { 1, 2, 3 };
N> cout << i << endl;
Здесь неявно выполняется стандартное преобразование
array to pointer conversion, результатом которого является указатель на первый элемент массива.
N> cout << &i << endl;
Здесь преобразование
array to pointer conversion не выполняется, а берется адрес объекта "массив". Начало объекта "массив" совпадает с началом первого элемента массива, поэтому получаются одинаковые значения.
ЗЫ
Чтобы убедится, что ты работаешь с разными сущностями, попробуй такой пример:
int main()
{
int i[] = { 1, 2, 3 };
cout << i << '\t' << i+1 << endl;
cout << &i << '\t' << &i+1 << endl;
cout << endl;
return 0;
}