C ポインターと配列
ポインターと配列
ポインタを使用してアクセスすることもできます配列.
次の整数の配列を考えてみましょう。
例
あなたはから学びました配列の章を使用して配列要素をループできることfor
ループ:
例
結果:
255075100
各配列要素の値を出力する代わりに、各配列要素のメモリ アドレスを出力しましょう。
例
結果:
0x7ffe70f9d8f00x7ffe70f9d8f40x7ffe70f9d8f80x7ffe70f9d8fc
各要素のメモリ アドレスの最後の番号が異なり、4 が追加されていることに注意してください。
のサイズだからです。int
type は通常 4 バイトです。次のことを覚えておいてください。
例
結果:
4
したがって、上記の「メモリ アドレスの例」から、コンパイラが配列要素ごとに 4 バイトのメモリを予約していることがわかります。これは、配列全体が 16 バイト (4 * 4) のメモリ ストレージを占有することを意味します。
例
結果:
16
ポインターは配列にどのように関連していますか
では、ポインタと配列の関係は何ですか?さて、Cでは、配列の名前、実際にはポインターに最初の要素アレイの。
混乱している?これをよりよく理解し、上記の「メモリ アドレスの例」をもう一度使用してみましょう。
のメモリアドレスの最初の要素と同じです配列の名前:
例
結果:
0x7ffe70f9d8f00x7ffe70f9d8f0
これは基本的に、ポインターを介して配列を操作できることを意味します!
どうやって? myNumbers は myNumbers の最初の要素へのポインターであるため、*
それにアクセスする演算子:
例
結果:
25
myNumbers の残りの要素にアクセスするには、ポインター/配列をインクリメントします (+1、+2 など)。
例
結果:
5075
またはそれをループします:
例
結果:
255075100
ポインターを使用して配列要素の値を変更することもできます。
例
結果:
1317
配列を操作するこの方法は、少し過剰に思えるかもしれません。特に上記の例のような単純な配列では。ただし、大きな配列の場合は、ポインターを使用して配列にアクセスして操作する方がはるかに効率的です。
また、アクセスが高速で簡単であると考えられています二次元配列ポインタ付き。
また、文字列は実際には配列であるため、ポインターを使用してアクセスすることもできます文字列.
今のところ、これがどのように機能するかを知っていることは素晴らしいことです。ただし、前の章で指定したように。ポインタは慎重に扱う必要があります、メモリに保存されている他のデータを上書きする可能性があるためです。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。