Before listing the difference between pointer and reference in C++ , lets see the definition of pointer and reference.
Pointer: A pointer is a simply variable that stores the address of another variable. The variable can also be another pointer.
Reference: A reference is a variable that refers to another variable. Or we can say an alias of a variable.
int a = 3;
int *ptr = &a; //pointer has address of int variable "a".
int &ref = a; // reference "ref" is referring the variable "a"
NOTE:
There is no reference concept in C language but in C++ only. There is only concept of pass by value and pass by pointers/address exist in C programming. But, normally, people also use to say pass by reference in C to pass by address or pointers. You can read here pass by value and pass by pointers in C with example.
As per observations, generally, the difference between pointer and reference is one of the important C++ interview questions asked to freshers or 2 or 3 years experienced candidates in the interviews .
C++ POINTER Vs REFERENCE
1) A pointer can be initialized with NULL but a reference can’t be NULL. Reference always refers to an object.
int a=3; int &ref = a;// OK
int *ptr= NULL //OK
int &ref = NULL Or 0;// Error : 'initializing' : cannot convert from 'int' to 'int &'.
2 ) Pointers can be re-assigned but a reference can’t be re-assigned.
In below example, Initially pointer ptr is assigned to address of variable “a” and re-assigned to address of another variable “b”. Reference “ref” is Initially assigned to variable “a” but on re-assigning it again with another variable “b”, compiler flashes an error.
int main(){
int a = 3;// define a variable
int *ptr = &a; //pointer has address of int variable "a".
int &ref = a; // reference "ref" is referring the variable "a"
int b=5;//define another variable. // ptr can point to another variable b
ptr = &b; // reference can't point to another variable b as because it is already referencing variable a
ref = &b; // compiler error return 0;
}
3) Pointers can point to another pointer but reference cannot point to another reference.
4) Cannot get the address of a reference but we can get address of a pointer in C++.
5) Cannot have array of references but we can have array of pointers.
6) A pointer is de-referenced with * to access the value at memory location it points to, whereas a reference can be used directly.
.