広告
↓発売日:2018年09月22日↓
新品価格 |
前回は関数を使って命令をひとまとめにする事を学びました。
でも前にも少し話しましたが関数は関わる数と書きますよね。
言葉通りに関数は他の関数に値を渡したり、逆に他の関数から値を受け取ったりする事ができます。
色んなトコロと関わるワケです。
今回からはそんな関数のカタチを見ていきましょう。
/*初日 プログラム1*/ #include <stdio.h> void func(int); int main(){ printf("関数funcに数字の10を渡して\n"); printf("関数funcから出力します!\n\n"); func(10); return 0; } void func(int suji){ printf("%d\n",suji); }
関数を使う時は「int main()」の前にプロトタイプ宣言、「int main()」の後にその内容でしたね。
同じようにこちらが
void func(int);
「int main()」より前の「プロトタイプ宣言」、
そして「int main()」の後に内容を書いていきます。
void func(int suji){ /*関数funcの内容を書く*/ }
数字を渡す場合のプロトタイプ宣言は、「void func()」の()カッコの中に渡す種類(int)などを書きます。
先頭は「void」のままです!
今回は数字を渡すので、「void func(int)」とします
関数を使う時は
func(10);
「()」の中に渡したい数字を書きます。
これで関数「func」に「10」という数字を渡す事ができます。続いて関数「func」の内容ですね。
void func(int suji){ printf("%d\n",suji); }
ここで「int suji」と変数名のようなものがでてきました。
思った通りこれは変数名です。
関数に受け渡しする数字や文字の変数名はここで決めます。
そして後は「printf()」命令で変数の内容を出力してるだけです。
この時に渡された数字で計算して結果を出力したりする事ができます。
もちろん複数の数字を渡す事もできるので後ほど紹介します。
では引き続き色んなモノを渡してみましょう。
/*初日 プログラム2*/ #include <stdio.h> void func(int); int main(){ int suji = 10; printf("関数funcに変数の「suji」を渡して\n"); printf("関数funcから出力します!\n\n"); func(suji); return 0; } void func(int suji){ printf("%d\n",suji); }
変数も同じように渡す事ができます。
/*初日 プログラム3*/ #include <stdio.h> void func(int); int main(){ int suji = 10; printf("それぞれ「main」と「func」から出力します!\n\n"); func(suji); printf("mainから出力「suji」 = %d\n",suji); return 0; } void func(int suji){ suji = 20; printf("funcから出力「suji」 = %d\n",suji); }
変数「suji」は「20」になったはずなのに、「int main()」の中では「10」に戻ってしまいました。
これは元に戻ったのではありません。名前は一緒だけども別の変数ということです。
なので関数の方の変数名は別に同じでなくても大丈夫です。
値をコピーしてる感じです。
/*初日 プログラム4*/ #include <stdio.h> void menseki(int,int); int main(){ int tate = 10,yoko = 20; printf("縦×横で面積を計算します!\n\n"); menseki(tate,yoko); return 0; } void menseki(int tate,int yoko){ printf("縦=%d 横=%d\n",tate,yoko); printf("面積は%dになります!\n",tate * yoko); }
2つ以上渡す時は「,」カンマで区切ります。
void menseki(int,int);
使う時も
menseki(tate,yoko);
渡したい順番で変数などを書くだけです。
広告
/*初日 プログラム5*/ #include <stdio.h> void func(char); int main(){ printf("関数funcに文字を渡します!\n\n"); func('A'); return 0; } void func(char moji){ printf("ボクの血液型は%c型です!\n",moji); }
今回は文字を渡すので「char」をつけます。
void func(char);
あとは数字と変わらずそのままですね!
文字をそのまま渡す時は「'」シングルクォーテーションがつきます。
/*初日 プログラム6*/ #include <stdio.h> void func(int,char); int main(){ int age = 17; char blood = 'B'; printf("関数funcに文字と数字を渡します!\n\n"); func(age,blood); return 0; } void func(int age,char blood){ printf("ボクは%d才で血液型は%c型です!\n",age,blood); }
もちろん違う種類の変数でも一緒に渡すことができます。
func(age,blood);
ここで文字の変数「blood」を渡す時に、「'」シングルクォーテーションが付かないことに注意です!
最後に配列と文章を渡す場合を見ていきましょう!
/*初日 プログラム7*/ #include <stdio.h> void func(int[]); int main(){ int ary[5] = {1,2,3,4,5}; func(ary); return 0; } void func(int ary[]){ int i; for(i=0;i<5;i++){ printf("ary[%d] = %d\n",i,ary[i]); } }
まずプロトタイプ宣言ですが
void func(int[]);
配列を使うので[]カッコをつけます。配列の数は書かなくて大丈夫です。
次に「int main()」内で関数「func」に配列「ary」を渡す時ですが、
func(ary);
このように配列名だけで大丈夫です。
そして関数「func」の本体でも
void func(int ary[]){ int i; for(i=0;i<5;i++){ printf("ary[%d] = %d\n",i,ary[i]); } }
配列の数は書かなくて大丈夫です。
/*初日 プログラム8*/ #include <stdio.h> void func(char[]); int main(){ char ary[30] = "this is a pen"; func(ary); return 0; } void func(char ary[]){ int i; for(i=0;i<13;i++){ printf("[%c]",ary[i]); } printf("\n"); printf("%s\n",ary); }
文章も数字の時とほとんど変わりません!
初日に少し長くなってしまいました。
今回は他の関数に数字や文字を渡すやり方を学びました。
この渡す数字や文字の事を引数(ひきすう)っていいます!
なんとなーく覚えましょう!
次回は他の関数から値や文字を受け取ってみます。
広告
↓発売日:2016年02月29日↓
12歳からはじめる ゼロからのC言語 ゲームプログラミング教室 新品価格 |
↓発売日:2018年06月22日↓
新品価格 |
↓発売日:2018年03月09日↓
新品価格 |
↓発売日:2017年06月14日↓
新品価格 |
↓発売日:2018年05月21日↓
新品価格 |
↓発売日:2017年12月07日↓
新品価格 |
↓発売日:2017年02月08日↓
新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ) 新品価格 |
↓発売日:2017年09月26日↓
新品価格 |