Я знаю, что &a
или &a[0]
дает нам адрес первого элемента.
Технически.&a
фактически является адресом самого массива.Он просто имеет то же значение, что и адрес первого элемента.Но обратите внимание, что тип выражения отличается.&a
- это int (*)[5]
(указатель на массив из 5 целых чисел), в то время как &a[0]
- это int*
(указатель на целое число).
Мой вопрос: как мне напечататьадрес указателя, указывающего на массив?
Первый шаг - получить указатель.В вашем примере нет переменных-указателей.Массив не является указателем.Предложение «Фактическая переменная массива, в данном примере, является указателем на память для всех ее элементов.» страницы очень вводит в заблуждение, поскольку массив не является объектом указателя.Нарисованная диаграмма не соответствует программе.
Вот программа, которая соответствует схеме:
int array[5]; // Allocates memory for 5 ints.
int* a = array; // a pointer to the first element of the array
a[0] = 1;
for (int i=1; i<5; i++) {
a[i] = a[i-1] * 2;
}
Здесь у нас фактически есть указатель.Теперь вы можете распечатать адрес указателя:
std::cout << &a;