Foo const *foo1;
The object that is pointing to is going to be constant, right?
Foo *const foo2;
The pointer 'foo2' is going to be constant and cannot be pointing to other stuffs, right?
const Foo *foo3;
This is same as first one, foo1, am I correct?
"const" makes the thing on its immediate left a constant, unless it is used at the beginning (in which case the leftmost item will be const).
T const*: T is const.
T* const: Pointer is const. T can still be edited.
T const* const: Both T and Pointer are const.