個人メモのポインタと引用の違い


1、ポインタはcの中で最も重要な特殊な変数です.その大きさは4バイトの符号なし整形で、格納できる値は0 x 00000000-0 xFFFFFFFFFF(32ビットオペレーティングシステム下)(64ビットオペレーティングシステム下でアドレス範囲が超大きい)
ポインタはC言語の魂で、この変数にはメモリアドレスが保存されています.アドレスを通じて対応する変数ユニットを見つけることができて、宅配便を1つ送るように、正確な配送アドレスが必要で、アドレスの品物がなければどこに送るか分かりません.コンピュータの中でメモリ漏れと呼ばれています.
参照もアドレスであり、c++言語の拡張である.参照時に変数の別名.参照に対する操作は、この変数に対する直接操作と同じである.
2、ポインタが空の場合、そのポインタを操作することはできません.これは誤ったアクセスを参照し、プログラムのクラッシュを引き起こします.だからC言語ではポインタの操作にかなり注意しなければならない.
しかし、空のポインタを定義することができます.
たとえば
int * p = NULL;

リファレンスは空ではなく、新しい変数ではなく、オペレーティングシステムが新しいメモリ領域を割り当てることはありません.リファレンスを宣言するときは、同時に初期化する必要があります.
もちろん、コンパイラは通過できます.
int * p = NULL;
int &q = *p;

空の参照を定義しているような気がしますが....
引用を明らかにするには、このような方法は間違っています.
たとえばstring&stlを定義します.この引用は誰の引用か分からないから!
次のように定義します.
string str("reference");
string &rstr = str;

3、sizeof
sizeof(参照)は、参照に対応する変数タイプのサイズを示します.
sizeof(ポインタ)では、このポインタの大きさを示し、32ビットマシンは4です.
eg:
chara = 10,&ra=a;
char*p = &a;

sizeof(ra)これはsizeof(a)です.その値はcharのサイズが1です.
sizeof(p)はポインタサイズ4