広告
↓発売日:2018年09月22日↓
新品価格 |
前回に続いて関数の使い方です。
今回は他の関数から数字や文字を受け取る方法を見ていきましょう!
/*二日目 プログラム1*/ #include <stdio.h> int func(void); int main(){ int suji; suji = func(); printf("関数funcから受け取った数字 = %d\n",suji); return 0; } int func(){ return 10; }
数字を受け取るのでやっぱり「int」を使います。最初の部分に注目です。
int func(void);
今度は先頭に「int」が付いて()カッコの中は「void」になりました。
うすうす気づかれているかもしれませんが、何も受け渡しがない時には「void」を書きます。
そのまま関数「func」の中身を見てみましょう。
int func(){ return 10; }
「return」と書いてあります。
戻るとか、返るとかそんな感じの意味ですよね。
言葉通りにこの「return」によって数字やら文字やらを返してあげます。
それでは元に戻って受け取る為の変数を用意して受け取ってみます。
suji = func();
これで関数「func」から返ってきた値を変数「suji」が受け取る事ができました。
/*二日目 プログラム2*/ #include <stdio.h> int func(void); int main(){ int suji; suji = func(); printf("関数funcから受け取った数字 = %d\n",suji); return 0; } int func(){ int suji = 100; return suji; }
もちろん変数でも大丈夫です!
広告
/*二日目 プログラム3*/ #include <stdio.h> int func(void); int main(){ int suji; suji = func(); printf("関数funcから受け取った数字 = %d\n",suji); return 0; } int func(){ int suji2 = 10; int suji3 = 20; return suji2 + suji3; }
計算を返すのも大丈夫です。
今までの経験からなんとなく
return suji2,suji3;
このように「,」で区切って2つ以上の数を返したいトコロですが、これはできません・・・。
注意です。
/*二日目 プログラム4*/ #include <stdio.h> int func(void); int main(){ if(func()){ printf("hello\n"); } printf("%d\n",func()); return 0; } int func(){ return 1; }
ちょっとなれないとややこしいですが、受け取った値を変数などに保存せず直接使う事もできます。
そういえば・・・。見覚えあるカタチですよね!
そうです。
int main(){ return 0; }
最初の方からお世話になっていた、「int main()」に同じような事が書いてますね!
実は「main」も関数の一つです。
その役目は、ここからプログラムを始めます!という役目をしています。
そしてやっぱり値をどこからか受け取ったり返したりしているのですが・・・、そこの解説はまたの機会にしたいと思います。
最後に一文字を受け取ってみましょう。
/*二日目 プログラム5*/ #include <stdio.h> char func(void); int main(){ char moji; moji = func(); printf("関数funcから受け取った文字 = %c\n",moji); return 0; } char func(){ return 'A'; }
一文字を受け取る時は「char」!
今までやってきた事なので大丈夫ですね!
今回は他の関数から数字や文字を受け取るやり方を学びました。
この受け取る数字や文字の事を戻り値(もどりち)っていいます!
なんとなーく覚えましょう!
実はprintf関数やscanf関数にも戻り値は存在します。
少し試してみましょう。
/*二日目 プログラム6*/ #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main(){ int suji; int modoriti,modoriti2; modoriti = printf("hello"); printf("\n数字を入力してください > "); modoriti2 = scanf("%d",&suji); printf("\n"); printf("suji = %d\n",suji); printf("printfの戻り値 = %d\n",modoriti); printf("scanfの戻り値 = %d\n",modoriti2); return 0; }
こんな結果になりました。
結論から言いますと、
printfは成功したら出力した文字数を失敗したら0を戻り値として返します。
scanfは成功したら読み込んだ項目数を失敗したら0を戻り値として返します。
細かい説明は省きますが、scanfのような関数はセキュリティ上で問題があるのでこの戻り値の結果でエラーが出ていないか?など確認する必要があるのです。
ただプログラムの入門段階でそこまでやってしまうと、とても大変なので戻り値の値を無視するみたいな意味の(void)というのを先頭につけていたのです。
この場合は渡す時と同じようにはいかないので注意です。
詳しくは後半学ぶポインタの所で解説します!
広告
↓発売日: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日↓
新品価格 |