研究ノートの内容から:Ditaiソフトウェア・カレッジTangzuo林先生のビデオ、私はあなたの指導に感謝します
1.参照は、変数の別名ですが、コードのメモリ空間
すでに存在していることを非読み取り専用の変数は読み取り専用のプロパティを作成する必要がある場合2.、それだけにconst参照として新しい変数を定義する必要があり、新しい変数は読み取り専用で
3、C ++コンパイラは、一定の値にスペースを割り当てる、使用するCONST基準となり、このメモリ空間参照名の別名として、即ちセグメント初期化されたCONSTにリテラルの参照を使用する場合メモリ、取るが、メモリ部取るつもりはない場合、シンボルテーブルの値
の参照を使用する場合4.メモリ空間の同じ期間のエイリアスの代表に別の参照して別の新しい参照を初期化するために参照すると、アドレスに同じ結果を撮ります
サンプルプログラム:
(1)
int a = 0;
const int& b = a;
int* p = (int*)&b;
b = 5;//Error,b是只读变量
*p = 5;//Ok,修改变量a的值
(2)
const int& b = 1;
int* p = (int*)&b;
b = 5;//Error,只读变量
*p = 5;//Ok,修改变量b所对应的内存空间的值
独自のメモリ空間、それには言及がありませんか?(あり)
サンプルプログラム:
(1)
#include <stdio.h>
struct TRef
{
char& r;
};
int main()
{
char c = 'c';
char& rc = c;
TRef ref = {c};
printf("sizeof(char&) = %d\n",sizeof(char&)); //1
printf("sizeof(rc) = %d\n",sizeof(rc)); //1
printf("sizeof(TRef) = %d\n",sizeof(TRef)); //4
printf("sizeof(ref.r) = %d\n",sizeof(ref.r)); //1
return 0;
}
第三の印刷は4であるので、(それが誰の参照を初期化していないので、それほどプリントアウトすると、ポインタのサイズである、)、ポインター:それはの自然を引用しました
C ++の実装で引用すると、内部ポインタ定数のある
タイプ&名前; - >タイプ* constの名前。