В чем разница между * и &?
Указатель это есть адрес, он и хранится в переменной.
& Это ссылка. Как бы алиас на то место, куда ссылается. Разница есть.
Ссылку нельзя изменить, изменить можно только значение в памяти, куда ссылается ссылка. Саму ссылку поменять нельзя. Указатель можно менять. Константный указатель нельзя поменять.
Ссылка не может быть неинициализированна, указатель может быть.
Указатель может указывать на память в куче, которая должна быть освобождена, ссылку никогда не нужно освобождать отдельно.
Плюс ещё бывают r-value ссылки(кажется, так называются) &&. В них нельзя присваивать, только читать.
Вот тебе информация насчёт твоего вопроса.