Причина бесконечного вывода несвязанных символов?
Причин много:
1.В функции addressSearch  в цикле ты читаешь в name ввод пользователя в цикле, затем присваиваешь адрес name в массив. Тут ошибка в том, что name у тебя все время одна и та же переменная и весь массив у тебя будет заполнен одним и тем же значением - адресом name. На каждой итерации цикла после ввода, name будет иметь свое значение, но в следующей итерации это значение затрется следующим вводом. Таким образом в address на выходе из функции ты будешь иметь в каждом элементе адрес name, который ссылается на один и тот же объект, содержащий последний ввод пользователя.
2.В функции addressSearch переменные name и address объявлены как локальные, после выхода из функции этих переменных уже не существует, а ты возвращаешь из функции адрес не существующей переменной. Поэтому и бардак в выводе.
У вас полнейший ад в плане работы с памятью. Вообще непонятно зачем эта свистопляска с указателем на string и массивом, непонятно даже что вы хотите вернуть из функции поиска - указатель на string или на массив string. Так или иначе, и то и другое - локальные переменные, и пытаться работать с указателями на них после завершения работы функции - грубая ошибка (точнее, ошибка пытаться возвращать указатель на локальную переменную из фукнции и думать, что это будет работать).
Укажите, что вы хотите сделать, т.к. сложно даже понять решаемую задачу (видимо, что-то где-то найти?).