今回はプログラムとメモリの関係について、記載しようと思います。スタック領域、ヒープ領域等の細かい話ではなく、もう少し感覚的な話をしたいと思います。クラスを勉強していると本等で必ず出てきますね。クラスは書いただけじゃだめだよ、インスタンスにしないと意味ないからね、という説明。この説明では勉強中の方はよくわからないと思います。この辺りの理解の助けとなれば幸いです。ソフトウェアはデジタル、結局は0か1まず、私たちはPython等の言語でコードを記載していますが、これはコンパイラによって機械語に置き換えられます。"10"という数値は"00001010"となります。1に変換されるのです。メモリの使われ方そして、もうひとつ大事なのがアドレスです。1のデータを結び付けられてセットされます。何か変数を作成したとします。すると、どこかのアドレスに変数のデータがセットされます。そのデータにどうやってアクセスするかと言うと、アドレスを頼りにデータにアクセスします。変数も関数もクラスも基本的に、上記と同じ仕組みになります。関数の先頭アドレス、クラスの先頭アドレスを基に関数を実行したり、クラスのメンバにアクセスします。インスタンスとはクラスをメモリ上に展開するにはどうしたらよいのでしょうか?それがまさにインスタンスを作成するという意味です。クラス名()だけでインスタンスを作ることができます。これで初めてメモリ上に展開されます。クラスは複数のインスタンスを作成することが可能です。クラス名()aというインスタンスと、bというインスタンスが作成されます。これはメモリ上では別々のアドレスと領域になります。aのクラスのメンバ変数に何か設定したとしても、bのメンバ変数には何も影響はありません。aとbは全く別物なのです。参照渡しとはよく値渡しか参照渡しか、という話があると思いますが、オブジェクト指向言語は基本的に参照渡しと考えて良いと思います。参照渡しとは何かというと、関数の引数にクラス名を書いたときに、クラスのメモリ領域全部をコピーすることはしません。クラスの先頭アドレスだけを渡し、アドレスからクラスのメンバにアクセスする方法です。アドレスしか渡していないので、高速です。値渡し(コピー渡し)をするとメモリをどんどん使います。処理に時間がかかりますので、普通に書けば、参照渡しです。意図的に値渡しにしたいときは、使用している言語の書き方に沿って書く必要があるはすです。~メモリの使われ方~FacebookTwitterPocketLINEもっとプログラミングについて勉強したいという方は、オンラインプログラミングスクールを体験してみてはいかがでしょうか。学業や仕事で忙しい方も、オンラインプログラミングスクールであれば、時間と場所を選ばす学習することができます。下記の2つはどちらも現役エンジニアがマンツーマンで対応してくれます。・転職支援が充実:全コース転職支援あり※受講終了後に転職が決まらなかった場合は受講料を全額返金する返金保証あり・体験レッスン、カウンセリングが無料です。転職を考えている方はカウンセリングを1度受けてみると、選択肢が広がります。Piの使い方、設定をわかりやすく解説。長年、ソフトウェア開発に携わっています。PiやPythonについて、簡単な質問であれば、お答えします。下記のお問合せからご連絡ください。月別アーカイブはてなブログをはじめよう!raspberrypiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。