В C ++ массив похож на несколько переменных, сгруппированных вместе, поэтому у каждой из них есть адрес памяти, но они расположены один за другим.
Итак, указатель указывает на адрес первого элемента , а остальные элементы находятся в адресах сразу после этого в следующем порядке.
Когда вы используете оператор * для указателя, он ссылается на содержимое адреса памяти, на который указывает указатель.
Если вы хотите получить доступ к другому элементу массива, используя это, вы бы использовали *(ptr + 5)
для смещения адреса памяти.
Когда вы используете только имя переменной, язык просто смещает вас и получает все содержимое массива. Указатель не знает длину массива, но может найти его конец, потому что массивы char всегда заканчиваются нулевым символом (\ 0).