プログラミング技術ブログ管理者のP.Hです!今回は、プログラムで非常に重要なメモリのアドレスについて記載しようと思います。初心者はこの部分を理解していない、もしくは勘違いをして理解をしている人が多いです。中級者でも理解せずにコーディングしている人もいます。この内容が理解できると、自分のコードに自信が持てるようになりますので、ぜひ読んでみてください。それでは解説していきます。プログラムがパソコン内部で実行される時の流れこの内容については細かく理解する必要はありませんが、大まかな流れは知っておく必要があります。実際には、こんなに単純ではありませんが、この程度の理解で十分です。実行すると、プログラムがメモリに展開されるメモリにはアドレスと記憶領域がある。アドレスを指定して、それに紐づいた記憶領域内の値やプログラムを参照する。メモリアドレスを指定して記憶領域の値を読み書きし、CPUが演算処理を行う。取り出しているという点です。アドレスを指定する、ここが非常に重要なポイントです。下記の図はメモリアドレスのイメージになります(完全にイメージなのでアドレスや値は適当です)。イメージプログラムで操作しているのは、メモリアドレス(記憶領域ではない)下記にひとつ例を記載します。xは配列データ全てを渡しているのではない。配列の先頭のメモリアドレスだけ渡している。test2は関数のプログラムの全てを渡しているのではない。関数の先頭のメモリアドレスだけ渡している。行わないが関数を引数に渡す時は、関数名のみ書けばよい。同じ配列を操作していることになる。上記例題のコメントに解説を記載しています。pythonでは、メモリアドレスから記憶領域のデータを参照するということを自動で行ってくれます。私たちがpythonのコードで扱っているは、記憶領域の値ではなく、メモリアドレスということを認識してください。データを適切に識別してくれます。コード上でコピー(代入)する場合を考えてみてください(関数等の引数に値を渡す場合も同じ)。実際は先頭アドレスだけをコピーしているので、処理はとても軽いのです。Check!このアドレスを渡すことを参照渡しと言います。逆に記憶領域のデータを渡すことを値渡しと言います。話は変わりますが、C言語でコピー(代入)をする場合、記憶領域のデータをコピーします。変換しなければなりません。この操作をポインタと言いますが、メモリ操作は厳密に行わないとすぐにクラッシュします。C言語とpythonは全く逆のしくみになっています。スピードも速く、とてもわかりやすくコードを書くことができます。関数、クラスを認識し、プログラムを実行してくれるこの感覚はクラスを扱うよう時に、とても重要になりますので、ぜひ覚えておいてください。今回の解説は以上になります。信じるべきものは何なのか。Piの使い方、設定をわかりやすく解説。長年、ソフトウェア開発に携わっています。8はてなブログをはじめよう!raspberrypiさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。