1. |
Pointers in C++ can be assigned to NULL values. |
References in C++ can never be NULL else; it will throw an exception. |
2. |
To dereference a variable in the case of pointers, (*) operator is used |
There is no need for referencing the variable; the variable name is simply used in case of reference in C++. |
3. |
Pointers allow multiple levels of indirection, which means that pointer to pointer to pointer assigning and targeting is possible. For example: int *ptr, int **ptr1; int x= 10; int y= 20; ptr = &x; ptr1 = &ptr; |
No multiple levels of indirection are possible in the case of references. Only a single level is applicable in references. Implementing multiple levels in references in C++ throws a compiler error to the user. For example, int a = 13; int &ref = a; int &&ref1 = ref; |
4. |
A pointer can be reassigned to point to another variable. But the variable needs to be of the same type of variable. For example: int *p; Int x, y; p = &x; p = &y; |
Once the variable is referred to by the reference variable, it cannot be reassigned to refer to another variable. |
5. |
All the arithmetic operations like addition, subtraction, increment, etc., are possible in the case of pointers in C++. This is known as Pointer arithmetic. For example: int arr [5] = {10, 20, 30, 40, 50}; int p = arr; for (int i =0; i<5; i++) { cout << *p << endl; p++; } |
Arithmetic operations are not possible in the case of references. In C++, it will throw a compiler time error when it tries to do so. For example: int x = 10; int &ref = x; cout << ref++ << endl; |
6. |
In the case of declaring a pointer in a C++ program, (*) operator is used before the pointer name. For example: int *ptr; |
In the case of reference, the reference variable is declared by using the (&) operator before the reference variable, which stands for the address. For example: Int a= 10; int &ref = a; |
7. |
The pointer variable returns the value whose address it is pointing to. Value can be retrieved using the (*) operator. |
The reference variable returns the address of the address it is referring to. The address can be retrieved using the (&) operator. |
8. |
The pointer variable in C++ has its own address in computer memory, and it also occupies space in the stack. |
The reference variable does not have its own memory address; instead, it only points to the variable and shares the same address as the original variable. |