If it an int or const int, then your code is valid: it creates a pointer to constant integer, so you cannot change value it points to. It can point to const int (exact type) or plain int (stronger qualifier, more restrictions), but cannot point to volatile or const volatile int (discards qualifiers)