Объявление, такое как:
int num[29];
определяет непрерывный массив из 29 целых чисел.
Для доступа к элементам массива используйте num[i]
, где i - индекс (начиная с 0для 1-го элемента).
Выражение num
само по себе дает указатель (адрес и тип памяти) первого элемента массива.
Выражение ptr + i
(гдеptr - указатель, а i - целое число) вычисляет указатель, который находится на i-й позиции (в единицах типа указателя) после ptr.
Таким образом, num + i
дает указатель на элемент с индексом i.
Выражение &a
дает указатель на некоторый объект a
.
Выражение *ptr
дает объект, на который указывает указатель ptr.
Итаквыражения a
и *(&a)
эквивалентны.
Таким образом, num[5]
соответствует *(num+5)
, а num+5
соответствует &num[5]
и num
совпадают с &num[0]
Когда вы печатаете указатель cout, он показывает свой адрес.
Когда вы печатаете объект, он печатает значение объекта.
Итак,
cout << num + 5;
будет печатать адрес 5-го (индексированного нулями) элемента num
и
cout << num[5];
напечатают значение 5-го (с нулевым индексом) элемента num