目次
1: ポインタとは何ですか
実際、ポインタの本質はアドレスです。メモリ空間をより有効に利用するために、メモリを 1 つずつセルに分割します。これらのセルの単位はバイトであり、各バイトの空間はすべてこれらのアドレスは、アドレスを通じてメモリをより適切に見つけて、そのメモリを使用するためのものです。たとえば、具体的な例を使用して説明してみましょう。
32 ビット マシンでは、32 本の高レベルと低レベルのライン、1/0 (高レベル、低レベル) があり、これらの 32 のアドレス ラインは最大 2^32 のアドレスを生成でき、そのサイズは 2^ であることがわかります。 32Byteのサイズは4GBに等しいため、32ビットマシンではポインタは4GBのメモリしか管理できませんが、64ビットマシンではポインタは8GBのメモリを管理できるため、ポインタのサイズは4バイトです。バイト単位の 8 サイズ。
2 つのポインターとポインターのタイプ:
1: ポインタ変数
名前が示すように、ポインタ変数はポインタを格納するために使用されます。これはアドレスです。数値のアドレスを使用して、アドレスの内容を見つけることができます。具体的なコードを通して説明しましょう:>
2:ポインタ型:絵で説明しよう
このような疑問を持つ友人も多いと思いますが、32ビットマシンではポインタのサイズは4バイトでメモリ上のアドレスも管理できるのに、なぜ型を区別する必要があるのでしょうか?
この疑問がある場合は、読み続けなければなりませんが、その前に、ワイルド ポインターの概念について話さなければなりません。
3: ワイルドポインター
ウェブ上: ワイルド ポインタは、ポインタが指す先が不明な場所です (ランダム、不正確、明示的な境界なし)。
ワイルドポインタとはその名の通り、ポインタの指す場所が不正で使用できず、勝手に操作されてしまうことを指します。
以下に、ワイルド ポインターの範囲に属するいくつかの状況を紹介します。
1: ポインタは初期化されていません
初期化を解除すると、ポインタがランダムに割り当てられ、ポインタがメモリ内のメモリをランダムに指すようになり、ポインタを使用すると、メモリ内の領域をランダムに使用して不正アクセスが発生します。
2: ポインタの境界外アクセス:
これは、特に配列を使用する場合にバグが発生しやすくなります。例で説明します。
3: ポインタが指すスペースが解放されます。
では、ワイルド ポインタを回避するにはどうすればよいでしょうか?
1. ポインタの初期化
2. 範囲外のポインタに注意してください
3. ポインタは解放するスペースを指し、時間内に NULL を設定します
4. ローカル変数のアドレスを返さないようにする
5. ポインタを使用する前に、ポインタの有効性を確認してください。
ポインタを定義するときは、ポインタがどこを指しているのかを考え、境界を越えないように注意する必要があります。
4: ポインタ操作
1ポインタ+(-)整数演算
これは、ポインタがデータ型のアドレスに後方に移動することを意味します。たとえば、int* のポインタの場合、整数変数のサイズのスペースを後方に移動し、開くときに開きます。スペースの場合は 4 バイトで、整数のスペースをスキップして次の数値をポイントします。char* 型のポインタを使用しているため、1 バイトのスペースにしかアクセスできません。
2 ポインター-ポインター (演算に 2 つのポインターが使用される場合、実行できるのは減算演算のみです)
2 つのアドレスの間に含まれる要素を表します
また、ポインタ-ポインタの前提条件は、2 つのポインタが同じ空間を指していることです。これは、2 つのポインタ間で要素の数がどれだけ異なるかが不明であるため、計算結果を計算することができないためです。
この記事はここで終わります。お待たせしました。