1.概念と使用方法を参照します
概念:参照は、エイリアスの変数(目標)、全く同じ変数参照と直接操作の動作です。
ヒント:引用不是定义一个新的变量
定義の形式は:
タイプ&参照変数名=変数名がすでに定義されている;
使用法:
例えば:
int a = 5;
int& b = a;
これは、B参照参照で、bは別名です。
2.参照パラメータを行います
私たちはしばしば、Cでポインタパラメータで実行します。
Func(int *a) ;
int main()
{
int arr[1000];
Func(arr);
}
このように、我々は、プロセスの効率を高めるために、引数としてポインタを使用します。したがって、C ++ *参照型の導入、およびポインタとして彼の効果、もちろんポインタの、あまりにも柔軟性があり、安全でない内部につながることができ、実際には、基礎となる参照ポインタで、次のように紹介されます。
彼は、引数として引用しました:
Func(int& a) ;
int main()
{
int arr[1000];
Func(arr);
}
彼はリスクを回避するために、その効果ポインターを達成するために、引数として良いポインタを引用しました。
関数内のパラメータxの値を変更したくない場合は、頻繁に参照パラメータ渡しを使用しています。
void ReadBigData (const bigData& x)//此时不需要在函数内部改变参数的值我们赋予参数常属性
{
int a = x. array[100];
}
3.参照は、戻り値を行います
Reference関数の戻り値、および機能を定義するときに、関数名の前に必要&
int ret = 0;//全局变量
int Add1(int a, int b)
{
ret = a + b;
return ret;
}
int& Add2(int a, int b)//引用做返回值
{
ret = a + b;
return ret;
}
int main( )
{
printf("%d\n", Add1(5,6));
printf("%d\n", Add2(4,5));
return 0;
}
参考文献は、戻り値の利点を行います:
関数参照の戻り値の最大の利点は、メモリ内の戻り値のコピーを生成することではありません。
4.アセンブリレベル特性基準を参照
結論:
一時変数への参照を返しません。
オブジェクトがまだ存在する現在のスコープの機能を返した場合、それはより効率的であるので、返された参照を使用することが好ましいです。
参照とポインタとの接触の違い:
▶違い:
ポインタは、エンティティであり、唯一の参照は、エイリアスです。
参照間接参照(*)なしで使用する場合、ポインタを間接参照必要と
初期化中に1回だけの参照は、次いで不変定義され、ポインタ変数と、
CONST修飾ポインタ不変; NO参照はポインタCONSTがあり、CONSTありません。
ヌル参照は、ポインタを空にすることはできません。
「参照のsizeofは」尖った変数(オブジェクト)を得大きさであり、「はsizeofポインタ」ポインタ自体が得られた(可変アドレスまたは尖った物体)のサイズであり;そして
ポインタと増分は(++)運用意義を引用し、同じではありません。
ビューメモリ割り当ての観点から8:ポインタ変数に割り当てられたプログラム記憶領域、及びメモリ領域の参照を割り当てる必要がありません。
▶類似性:メモリの両方の概念アドレス、一緒にポインタは、メモリの内容はアドレスによって指し示され、メモリ参照の片は別名です。