別の言い方をするとデータが格納されているのは配列変数でなくメモリであり配列変数hairetu[0],hairetu[1],hairetu[2]・・・はそのデータをとりあつかうために存在しています

おさらい 自作関数newmadefunction(int x);が実行されている間は ローカル変数xに格納されている数値はコンピュータのメモリに格納されていますが実行後は消えてしまうのでした

さて、突然ですが次のプログラムをご覧ください。


いまなら


16時までの20分間に限り


ただいまついている値札よりレジにて全品500%OFF!!!(*^▽^*)





それでは

こちらのプログラムをご覧ください。


#include <stdio.h>


void newmadefunction(int x)

{

x=x+5;

printf("%d\n",x);

}


int main(void){

int a=5;

a=a+5;

printf("%d\n",a);

return 0;

}


コンパイル結果

10


このプログラムは


aの変数宣言 初期化


int a=5;

のあと


変数aに格納されている数値5に


さらに5を足して


変数aに格納されている値を10に変更しています。


むずかしかったかな


ソーラー「いや・・・ぜんぜん・・・」


このプログラムの冒頭では


自作関数の定義

void newmadefunction(int x)

{

x=x+5;

printf("%d\n",x);

}



このプログラムでは使用されないのに


表記してありました


自作関数さん


出番がくるまでおとなし~くじっとまっているのです。


かわいらしいですね。



アレサ「 それでは自作関数 newmadefunction(int x)さ~ん。


出番ですよ~😊」



今度は、自作関数newmadefunction(int x)に登場してもらいましょう。



自作関数newmadefunction(int x)をmain関数内で実行してみます。



int xには5を代入しますね。



そのプログラムは次のようになります



#include <stdio.h>


void newmadefunction(int x)

{

x=x+5;

printf("%d\n",x);

}


int main(void){


newmadefunction(5);


return 0;

}


コンパイル結果

10


となります


このように


newmadefunction(5);と表記しただけで


int xに5を格納したことになります


ここが自作関数の便利なところですね。



最初のプログラムのコンパイル結果

👇

#include <stdio.h>


void newmadefunction(int x)

{

x=x+5;

printf("%d\n",x);

}


int main(void){

int a=5;

a=a+5;

printf("%d\n",a);

return 0;

}


コンパイル結果

10


と一致しています


最初のプログラムでは


👇のようにaの値が変化し


int a=5;

a=a+5;

より

a=10


自作関数newmadefunction(int x)のプログラムでは


次のようにxの値が変化しています。


int x=5;

x=x+5;

より

x=10


以上 よかったです。


                //excellent C言語より//



solarplexuss

「はい・・・これは何の説明???」


ソーラー「みごとな


参考書だね。excellent C言語


とってもわかりやすい~」


solarplexuss「大変わかりやすいけど???」


アレサ「ソーラーさん、ここから どう 


お話は


すすんでいくのでしょうか?」


ソーラー「もう、それをこれから自分達で作っていこうよ、アレサ😊」


アレサ「そういう流れですか・・・excellent C言語をボケ役につかっていたのですか・・・」


ソーラー「ふふっ ここでのポイントは



newmadefunction(5)のように


int x=5;と


自作関数newmadefunction(int x)に5を代入したところかな?


main関数内で


int main(void){


newmadefunction(5);


return 0;

}

のように記述されているけど


newmadefunction(5);の5は


自作関数内で定義された


int xに5を代入したものでしたね


int xは自作関数内で定義されたローカル変数なんだ


そして



 newmadefunction(int x);が実行される間は


つまり


void newmadefunction(int x)

{

x=x+5;

printf("%d\n",x);

}

のブロック{}内の命令文


x=x+5;

printf("%d\n",x);


が実行されている間は



  🌞メモリに付けられた変数名xは格納している値5とともに🌞

          


  🌞コンピュータのメモリに記憶されていますが🌞




 newmadefunction(int x);が実行されたあとは

 


  🌞メモリに付けられた変数名xは格納している値5とともに🌞


          

  🌞コンピュータのメモリから消えてしまいます🌞



ちょっといいかえると



         自作関数newmadefunction(int x);が実行


    つまり 自作関数の中身の定義、数値計算が実行されている間は


         ローカル変数xに格納されている数値は


        メモリに付けられた変数名xとともに


       コンピュータのメモリに格納されていることになります



solarplexuss「そのあたりは


ローカル変数、 グローバル変数のエピソードでやってきたね」




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

作者を応援しよう!

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

応援したユーザー

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