Tldr; Always prefer passing arguments by reference rather than by address.
Null pointer
A pointer can be a null pointer but a reference is always initialized and does not cause problems such as dereferencing a null pointer and crashing the program.
Info
Both pointers and references can be dangling and accessing them produces undefined results.
Pointer can be made for only lvalues
We can get the address of a rvalue such as literals. So, pointer only supports lvalues such as variables. On the other hand, const references supports both lvalue and rvalue.