but i do not understand the first question but notice that the pointer is a refrense mean that if u pass a pointer of int to an function it does not take a copy from the int it takes a copy of the refrence to the int so if u change the int value it will be changed and u can not retain the previous value for example :
int *i=new int ;
fun (i) ;
void fun (int *m)
the result of the cout will be 3 is that what u mean ?