回答受付が終了しました

ID非公開

2020/9/7 20:51

88回答

プログラミング C言語の変数について教えていただきたいです。

プログラミング C言語の変数について教えていただきたいです。 変数とはメモリ内に値や文字列を一時的に確保、保存する技術との事ですが、プログラミングにおける保存とはどういうことでしょうか?

プログラミング | C言語関連63閲覧xmlns="http://www.w3.org/2000/svg">25

回答(8件)

1

メモリを現実世界の保存容器に例えてみましょうか。 するとメモリとはその保存容器がズラズラーと並んでいる状態です。 あまりに沢山あるので、見分けるために番号がついています。 これがアドレスです。c言語ならポインタですね。 さて、何か保存してみましょう。 現実なら何らかの物体を容器にしまいます。 メモリの場合は、数値を書き込む事になります。 ここまでは、だいたい同じですね。 でも、この後取り出しをすると、異なる結果が生まれます。 現実の容器から中身を取り出すと、容器の中は空っぽになりますが、メモリでは取り出しても数値がそのままは残っています。 メモリの場合は次に何か別の値を書き込むまでは、ずっと保存されているのです。 ちなみに現実世界の容器が空の状態はメモリではゼロになっていると例えることができますが、実際にはゼロと言う数値が書き込まれているわけで、空になることはありえません。 変数とはその変数を使用している間、このメモリのどこかを割り当てているわけです。 変数が使われなくなると、割り当てがなくなるだけで、メモリの中はそのままです。 次に別の変数が同じ場所を使うかもしれません。 変数の初期値が不定なのはその為です。

1人がナイス!しています

0

「プログラミングにおける保存」は、一般的な「保存」と同じ意味合いです。 「何を何処に保存するか?」によってその手法は様々ですが、「変数における保存」ということなら「あらかじめ確保しておいたメモリ領域に値を書き込む」という行為を指します。

0

プログラミング言語では、代入という処理が 変数にデータを保存することに相当するかな。 例えばC言語、n = 10 ; という実行文でね。

1

変数の説明であれば、メモリ上の特定とアドレスに対して、データを書き込むことです。 プログラミング上では、ただ単に『変数に値を格納する』という概念上の動作を指します。 それ以上のものは指しません。 (変数の事を保存する技術と言うのは少々違和感のある表現です) 実際に物理的な動作はシステムによっても異なるでしょうが、一般的な多くのシステムでは、 コンパイラがコンパイル時に、各変数と紐付けたメモリアドレスに対してデータを出力するマシン語を生成します。 この段階で変数はアドレスへと還元され、変数の概念は消滅します。 CPUはそのマシン語を受け取ると、アドレスバスという出力装置に指定されたアドレスのビット配列をセットし、 データバスという出力装置に、指定されたデータのビット配列をセットし、 出力を実行します。 信号はメモリコントローラへと送られ、アドレスバスの信号に応じて、 データバスの出力先の回路が自動的に切り替わり、 指定したアドレスのメモリ素子に対して、データの信号が送られ、 それがメモリ素子に記憶されます。 (実際には現代のメモリシステムはもっと複雑で、数段階の処理を経て行われます) 最終的に、特定の物理メモリアドレスに置かれた、半導体素子の中に電荷という形でデータは記録されます。 それが変数に対するデータの保存の仕組みです。 (ただし、必ずしも全てがメモリへの書き込みとなるわけではありません。)

1人がナイス!しています