自分で関数を作る

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
saga

自分で関数を作る

#1

投稿記事 by saga » 12年前

自分で関数を作るときについて、次のようなコードがあります(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なのでなんとなくは...
というわけでこのコードについて詳しく教えてほしいです。

アバター
spaaaark・∀・
記事: 66
登録日時: 12年前
住所: 埼玉
連絡を取る:

Re: 自分で関数を作る

#2

投稿記事 by spaaaark・∀・ » 12年前

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変数に代入されることになります。
クリエイティブな生活で刺激的な毎日を!

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 自分で関数を作る

#3

投稿記事 by softya(ソフト屋) » 12年前

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

さて、これをさらに理解する為に、これを同じ動作をするプログラムをcalc関数なしのmainだけで書けますでしょうか? → 【内容変更】
10を定義した変数に入れて、numberに計算結果を入れるプログラムです。
spaaaark・∀・ さんの回答が理解できるなら、すぐ書けると思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

box
記事: 2002
登録日時: 14年前

Re: 自分で関数を作る

#4

投稿記事 by box » 12年前

saga さんが書きました: このコードを実行すると、「50」と表示されます。「temp=test*5;」の部分がいまいちよくわかりません。
calcというのは、要するに、「何か値を渡すから、それを5倍した結果を返してね」という関数です。
中学校で学んだ(はずの)関数、y = 5x と同じことをしています。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

閉鎖

“C言語何でも質問掲示板” へ戻る