>>167
亀レスすまん。お風呂タイムだった。
てゆうか、言語仕様上C++だと

int hoge

func( hoge );
printf("hoge=%d",hoge);

func( &ref ){
ref++ =100;
}
はアドレスで引数渡しているが101と表示されるのに対してポインタだと100と表示される。
つまりポインタではアドレスをインクリメントしているのに対して、
参照では呼び出し元のhogeの値をインクリメントしてんのよ。
この動作がJAVAのオブジェクト引数と似ているわけ。
それと16bit境界でのセグメントとかページングってのはx86に固有の概念だ。
最近のCPUでは32bit中の16bitでセグメント分けなんてしてなくて28bit
まではリニアアドレスで使える物がほとんどだ。上位4bitを使ってMMUを実現している。
MMUが無ければ32bitリニアアドレスでアクセスできる物もある。
つまりポインタではOSによるメモリ保護機能が無ければ

int *hoge = 0x1000;
if( hoge == fffffff ){
*hoge++=0x00;
}
なんて事も可能。
と言うかヒープとかのデータ領域はセグメントを定義して
このように0で初期化しますからね。