This has already been discussed in detail -
const qualifier means that a cannot be modified through code. If you attempt to do so the compiler will provide a diagnostic. Volatile still means that compiler cannot optimize or reorder access to a.
Practical Usage:
Accessing shared memory in read-only mode.
Accessing hardware registers in read-only mode.
Read more at http://tech.queryhome.com/18947/what-is-use-of-const-volatile