1、null参照が存在しません。リファレンスは、正当なメモリに接続する必要があります。
参照がターゲットに初期化されると、図2に示すように、それは他のオブジェクトに向けることができません。ポインタは、任意の時点で別のオブジェクトを指すことができます。
作成したとき3、参照が初期化されなければなりません。ポインタは、任意の時に初期化することができます。
4、C ++は参照によって渡された変数を提供します。関数は、引数可変ユニットを指すようにパラメータ(基準変数)と呼ばれ、パラメータが参照変数であり、引数が可変です。この引数はパラメータ基準の値によって変更することができます。
関数が基準時間を返す場合5、暗黙の戻り値へのポインタが返されます。このように、それは代入文の左側に機能することができます。次の例では:
#include <iostreamの> 使用して名前空間STD; ダブルヴァルス[] = { 10.1、12.6、33.1、24.1、50.0 }; ダブル&setValuesは(int型i)が { 戻りヴァルスを[i]は; // i番目の要素への参照を返します} // メイン関数上で定義された関数の呼び出しにINT メイン() { COUT << " 変更前の値を" << ENDL; のため(int型 I = 0 Iの<; 5。 ; I ++は ) { COUT << " ヴァルス[ " << << I " ] = " ; COUT <<ヴァルス[I] << ENDL; } setValues(1)= 20.23 ; // の第2の要素に変更 setValuesを(3。 =)70.8 ; // 第4要素の変更 COUT << " 値変更" << ENDLを、 ため(int型 I = 0 Iに<; 5。 ;I ++ ) { coutの<< "ヴァルス[ " << I << " ] = " ; COUT <<ヴァルス[I] << ENDL; } 戻り 0 ; }
上記のコードがコンパイルおよび実行されると、次の結果を生成します:
変更前の値 ヴァルス[ 0 ] = 10.1 ヴァルス[ 1 ] = 12.6 ヴァルス[ 2 ] = 33.1 ヴァルス[ 3 ] = 24.1 ヴァルス[ 4 ] = 50 変更値 ヴァルス[ 0 ] = 10.1 ヴァルス[ 1 ] = 20.23 ヴァルス[ 2 ] = 33.1 ヴァルス[ 3 ] = 70.8 ヴァルス[ 4 ] = 50
参照を返す場合は、参照されるオブジェクトに注意を払う範囲を超えることはできません。だから、ローカル変数への参照を返すようにすることは正当ではない、しかし、静的変数への参照を返すことができます。
INT&FUNC(){ int型Qが; // Qは;!返す// エラーは、コンパイル時に発生する 静的 INT ; X 戻り Xの; // セキュリティは、関数中のxは、範囲外の有効なままです }
6、継続