void Func00(int a){
a++;
}
void Func01(int &a){
a++;
}
void Func02(int *a){
a++;
}
int main(void){
int n = 0;
Func00(n); printf("%d\n", n);
Func01(n); printf("%d\n", n);
Func02(&n); printf("%d\n", n);
}

このプログラムを実行させる前は「0、1、(不定値)」
と表示されると予想していたのですが、実際は「0、1、1」と表示されます。

nのアドレスをFunc02へ渡して、そのポインタのアドレスをインクリメント(a++)しているので、
可笑しな値が表示されると思ったのですが・・・

関数へ変数のアドレスを渡して、そのアドレスの場所を変えているのに、
なぜ呼び出しもとのアドレスは変わらないのでしょうか?(*a)++の場合は値が変わりますが・・・。