I know that putting const before p's type protects the object that p points to, but what about:
void f(int * const p)
Is such a declaration legal?
Also, what is the difference between the following:
void f(const int *p)void f(int * const p)void f(const int * const p)void f(int const *p)