There are 3 types of const pointers:
//Data that p points to cannot be changed from p
const char* p = szBuffer;
//p cannot point to something different.
char* const p = szBuffer;
//Both of the above restrictions apply on p
const char* const p = szBuffer;
Method #2 above is most similar to a reference.
There are key differences between references and all of the 3 types of const pointers above:
-
Const pointers can be NULL.
-
A reference does not have its own address whereas a pointer does.
The address of a reference is the actual object’s address. -
A pointer has its own address and it holds as its value the address of the value it points to.
-
See my answer here for much more differences between references and pointers.