T * f(T & identifier);
Это функция, которая берет ссылку на T и возвращает указатель на T.
T & f(T & identifier);
Это функция, которая принимает ссылку на T и возвращает ссылку на T.
T f(T & identifier);
Этот берет ссылку на T и возвращает копию T.
void f(T * identifier);
Этот берет указатель на T и ничего не возвращает.
void f(T & identifier);
Этот берет ссылку на T и ничего не возвращает.
void f(T identifier);
Этот принимает значение T (копии) и ничего не возвращает.
Ссылки ведут себя почти точно так же, как указатели, за исключением того, что ссылка никогда не будет установлена в NULL, а ссылка неявно создается и разыменовывается для вас, поэтому вам не нужно иметь дело с синтаксисом указателя при вызове функции или внутри функции .