ya it is possible to change the pointer using any arithmetic operation.but real reason behind this is whats your pointer type.
there are two type of pointer.
1. constant pointer
2. variable pointer
so if your pointer is of type variable than you can change its value using any arithmetic operation as you mention above,but if your pointer type is of constant,you can not change it value using arithmetic operation.compiler will give you compilation error.
so the exact answer depend on your pointer type.
example
---------------------------------------------------------
constant type::>>
when you pass array to any function than that pointer type in function is constant type.
----------------------------------------------------------
variable type::>>
any pointer which you declare and assign it value explicitly is of type variable
int *p;
int k;
p=&k;
this is variable type pointer,you can change its value