void f(int x){}型の自作関数の()内で変数宣言されたint xに代入されたデータは自作関数fが実行されるとメモリにつけられた変数名xと共にコンピュータのメモリから消去されます


つづき


さあ 🐋void f(int x)型の自作関数の変数宣言int xにより作製された


変数xのスコープ(変数宣言により作製された変数xの使用可能な範囲)



どうなっているのかわかったかな😻😊


自作関数void f(int x)の()内の変数宣言int xにより作製された


変数xのスコープは


void f(int x){👉


cout << x << "をとりこみました。\n";


👈}


👉👈内でしたね


では


この変数xの寿命


(変数xがメモリに保持されてから消去されるまでの間)



はどうなっているのかというと・・・


main関数のブロック{}内で


f(1);


が実行されたとき


void f(int x){}型の自作関数fの()内で変数宣言されたint xに


代入されたデータは


自作関数のブロック{}内の命令文が実行されると


変数xごとコンピュータのメモリから消えてしまいます



その様子を


一緒に観察してみませんか?


サンプルとして以下のプログラムを用います。


#include <iostream>


using namespace std;


void f(int x){


cout << x << "をとりこみました。\n";


}


int main(){


f(1);


return 0;


}


プログラムの実行結果


1をとりこみました。


マックス「おおぅ いいじゃないか


自作関数fの()内のint xに数値データ1を代入されたもの


f(1);



main関数内に記述されているのか」


てんC「このプログラムで


自作関数


f(1);


が実行されると


int xに代入された数値データ1は


コンピュータのメモリの節約のため


変数xごとコンピュータのメモリ内から消去されます。



では😊


もう1つ


次のようなプログラムを観察してみますか?


#include <iostream>


using namespace std;


void f(int x){


cout << x << "をとりこみました。\n";


}


int main(){


int a=2;


f(1);


cout << a << "をとりこみました。\n";


return 0;


}


ビルド実行結果


1

2




このプログラムにおいて


変数aに格納されている数値データ2は


#include <iostream>


using namespace std;



void f(int x){


cout << x << "をとりこみました。\n";


}


int main(){


int a=2;👉

f(1);

cout << a << "をとりこみました。\n";

return 0;

👈}



aが変数宣言されたブロック{}内の👉👈内の命令文が全て実行されるまで


コンピュータのメモリに保存されています。


このプログラムで


自作関数f(int x)のint xに数値データ1を代入した


f(1);


が実行された場合


int xに格納された数値データ1は


変数xごとコンピュータのメモリから消えてしまいます


その直後の時点、つまり


f(1);


の次の命令文


cout <<a<< "をとりこみました。\n";


が実行される前の時点では


int a=2;


により


変数aに格納されている数値データ2は


まだコンピュータのメモリ内に保存されています


そして


f(1);


の次の命令文


cout <<a<< "をとりこみました。\n";


が実行されるときに


まだメモリに保存されている


変数aに格納されている数値データ2の情報が利用されるというわけです


自作関数fの()内で変数宣言された変数xのデータ情報は


コンピュータのメモリから消えていても


main関数のブロック内で変数宣言された変数aのデータ情報は


コンピュータのメモリに保存されているというわけです。


そして


main関数のブロック内の全ての命令文の実行の終了とともに


main関数のブロック内で変数宣言された変数aは


格納されている数値データ2とともに


コンピュータのメモリから消去されます。」


ソーラー「なるほど


この


自作関数が実行されたとき


自作関数内で変数宣言された変数



変数に格納されていたデータ情報が


コンピュータのメモリから


消去される仕組みは素晴らしいね。


メモリに使わなくなった変数のデータ情報がどんどんたまっていったら


コンピュータはメモリが使用できなくなるものね。」


  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る