Reference
1) A reference variable is a different name for an existing variable. If the variable initialized the variable name can be used to refer to a different variable.
2) Reference works like an alias for an existing variable. It is a temporary variable.
3) It does not need any indirection operator to access the value.
4) A null value cannot be assigned to the reference variable.
Pointer
1) A pointer is a variable that holds the memory address of another variable.
2) Pointer variable needs an indirection operator to access the value of a variable.
3) A null value can be assigned to the reference variable.