ページ 11

自分で関数を作る

Posted: 2013年7月29日(月) 17:14
by saga
自分で関数を作るときについて、次のようなコードがあります(Visual C++で書いたものです)。
#include <stdio.h>

int calc(int test){

   int temp;
   temp=test*5;

return temp;
}

int main(void){

int number=0;
    number=calc(10);
    printf("%d\n",number);

return 0;
}
このコードを実行すると、「50」と表示されます。「temp=test*5;」の部分がいまいちよくわかりません。
main関数でcalc関数に10を渡した結果が50なのでなんとなくは...
というわけでこのコードについて詳しく教えてほしいです。

Re: 自分で関数を作る

Posted: 2013年7月29日(月) 17:32
by spaaaark・∀・
temp変数は、その関数内で作られたもの、test変数は、関数calcに引数として渡した値となります。
このとき、test変数のような引数として受け取った値を代入する変数を仮引数と言います。

コード:

number=calc(10);
こう記述した際は、引数として渡される値は10で、その数値はcalc関数の中のtest変数に代入されます。
この場合、temp=test*5の、testには10が代入されているので、tempの値は10*5=50、となります。
そして、最後に戻り値としてtemp変数の中身を返しています。ここでは、その値をmain関数のnumber変数で受け取っています。

また、例えば、

コード:

int i;
/*処理*/
number=calc(3);    //// 1
number=calc(i);     //// 2
と記述した時、1の場合ではcalc関数のtest変数には3が、2の場合ではiに代入されている値がtest変数に代入されます。
このコードの場合、1の場合では15が、2の場合ではiに5をかけたものがnumber変数に代入されることになります。

Re: 自分で関数を作る

Posted: 2013年7月29日(月) 17:37
by softya(ソフト屋)
質問する場合は、引用元や課題であるかを明らかにしてくださいね。
今回の質問の元ネタは、こちらでしょうか?
「関数について | C言語入門サイト~bituse~」
http://bituse.info/c/17

さて、これをさらに理解する為に、これを同じ動作をするプログラムをcalc関数なしのmainだけで書けますでしょうか? → 【内容変更】
10を定義した変数に入れて、numberに計算結果を入れるプログラムです。
spaaaark・∀・ さんの回答が理解できるなら、すぐ書けると思います。

Re: 自分で関数を作る

Posted: 2013年7月29日(月) 17:43
by box
saga さんが書きました: このコードを実行すると、「50」と表示されます。「temp=test*5;」の部分がいまいちよくわかりません。
calcというのは、要するに、「何か値を渡すから、それを5倍した結果を返してね」という関数です。
中学校で学んだ(はずの)関数、y = 5x と同じことをしています。