説明
ポインタ「点」複合型の別のタイプ。
そして、それを除いて、参照(参照):
自身の複製やコピーポインタを許可するように、オブジェクトへのポインタであり、そのライフサイクルの時点で、いくつかの異なるオブジェクトを有していてもよいです。
ポインタは、それが不確実な値を持つことになり、初期値が与えられている定義する必要はありません。しかし、不必要なミスを避けるために、すべてのポインタを初期化することをお勧めします。
2つ、4つの状態のポインタ
- オブジェクトへのポイント。
- これは、占有オブジェクト空間の位置で閉鎖するポイント。
- 任意の物点なしのヌルポインタ、すなわち、
- 無効なポインタ、すなわち、上記の場合以外の値。
注意:
コピーしようとか、そうでない場合、エラーが発生します、無効なポインタ値にアクセスするが、コンパイラは、このようなエラーをチェックするための責任を負いません!
ポインタの第二と第三の形式は有効ですが、また、制限され、そのような行動が許可されていないオブジェクトポインタにアクセスしようとしました!
オブジェクトのアドレスへの第三に、アクセス
オブジェクトへのアドレスポインタを格納し、アドレスはアドレス文字(&)を取るために取得する必要があります。
int ival = 5;
int *p = &ival; // p存放变量ival的地址、或者说p是指向变量ival的指针
一般的には、オブジェクトポインタの種類は、それが完全一致を指し必要があります!
第四に、使用ポインタがオブジェクトにアクセスするには
オブジェクトへのポインタは、間接参照記号(*)は、オブジェクトにアクセスすることを可能にします。
int ival = 5;
int *p = &ival;
cout << *p;
第五に、NULLポインタ
NULLポインタが最初のそれは、ポインタの前に空であるかどうかを確認することができ、空を使用しようと、任意のオブジェクトを指していません。
NULLポインタを生成するいくつかの方法:
int *p1 = nullptr; // C++11新标准, 最好使用新标准
int *p2 = 0;
int *p3 = NULL; // 需要cstdlib,等价于上一种方法
INT変数は直接、ポインタに割り当てることができない場合でも変数0の値
六、void *型のポインタ
void *型のポインタの特殊なタイプです、簡単にオブジェクトのアドレスを格納するために使用することができます。
ポインタへのポインタ七
アドレスポインタは、どこへ行くか、別のポインタに再びそれを許すように、他のオブジェクトのようなオブジェクトへのポインタが、また、独自のアドレスを持っています。
int ival = 2;
int *pi = &ival;
int **ppi = π
IVALの値を取得する逆参照:
cout << *pi << endl;
cout << **ppi << endl;
八、ポインタ参照
基準自体はオブジェクトではないので、定義することができないへのポインタであるがポインタオブジェクト、参照へのポインタが存在してもよいです。
int ival = 2;
int *p; // p是一个int型指针
int *&r = p; // r是一个对指针p的引用
r = &ival; // r引用了指针p,该语句为令p指针指向ival
*r = 0; // 解引用得到ival, 该语句为将ival的值改为0