可以级联声明 int *ptr; int **ptr1; int x = 10; int y = 20; ptr = &x; ptr1 = &ptr;
是否可以重新赋值
可以
一旦变量被赋值给引用变量,那么这个引用变量将不能重新被赋值
是否可以做算术运算
可以
不可以
S.No.
Pointer
Reference
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.