Как это не до конца поняли?
Он перегружен таким образом, что при передаче ему указателя на char, он будет выводить символы до нуль-терминатора.
Ну а как выводятся отдельные символы, показали выше.
Зачем? У меня тоже есть такой репозиторий, где я храню всякие базовые штуки.
exeшники не нужны, ведь при желании это можно скомпилировать на каком нибудь cpp.sh.
У тебя сначала вызывается функция в которой и выводятся эти данные и после её завершения выводится сам массив.
1. Вынести cout'ы в функцию main и сделать переменные считающие данные в глобальную область.
2. Передавать 2 перемененные в функцию по ссылке и затем в main'e выводить после вывода массива.
3. Выводить массив в функции.
Ух это и вправду проблема, я выяснил почему так происходит - в потоке от cin >> strings; остаётся перенос строки(После нажатия Enter в поток передаётся \n который завершает его). cin.get() после cin >> strings.