🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
🌞なぜvoid newmadefunction(void){cout<<"今日もよいC言語日和です。¥n"; return ; } と自作関数が記述されるのでしょうか?returnに注目☆
🌞なぜvoid newmadefunction(void){cout<<"今日もよいC言語日和です。¥n"; return ; } と自作関数が記述されるのでしょうか?returnに注目☆
ソーラー「今度は自作関数の定義
void newmadefunction(void){
cout << "今日もよいC++言語日和です。" << "\n";
return ;
}
において
なぜ
return;
になっているのかについて考察してみるよ。
この自作関数 newmadefunction()の定義では
return;
と記述されています
なぜreturn 0;
でないのでしょうか?
そもそも
なぜ自作関数の定義に
return;
がついてくるのでしょうか?
そもそもreturn 0;
とはなんのためにあるのでしょうか?
void newmadefunction(void){
cout << "今日もよいC++言語日和です。" << "\n";
return ;
}
でなく
void newmadefunction(void){
cout << "今日もよいC++言語日和です。" << "\n";
}
で十分な
気がします。」
てんC「そうですね。ソーラーさん
さあ なぜ
return;
が自作関数の定義に記述されているのか
その答えは・・・」
ソーラー「みんな 知りたいか~い?」
てんC「みなさん おまちかねです」
ソーラー「注目 僕にあつまってるのかな?」
てんC「はい 相当なレベルあつまっています」
ソーラー「その答えは
関数の仕組みにあるのです。
さきのエピソードでもみてきたように
関数が実行されたとき
関数は戻り値をもつ
関数は戻り値を返される
よう設定されています
自作関数を自分で作成する場合
戻り値をどのような値にするかは自分で設定することができます。
今の自作関数の定義は
void newmadefunction(void){
cout << "今日もよいC++言語日和です。" << "\n";
return ;
}
となっています。
この場合
newmadefunction();
が実行されたときの
自作関数newmadefunction()
の戻り値はどのような値になっているのでしょうか
🌞🌞🌞🌞🌞🌞🌞🌞
自作関数newmadefunction()を実行するときは
newmadefunction(void);
でなく
newmadefunction();
と記述してください
newmadefunction(void);
と記述すると
ビルドエラーとなります。
solarplexussより
🌞🌞🌞🌞🌞🌞🌞🌞
実は
newmadefunction();
が実行されるとき
自作関数newmadefunction()の戻り値は
returnによって自由に設定することができます
もしreturn 0;なら
newmadefunction();
が実行されたとき
newmadefunction()は0という戻り値をもちます。
もしreturn 1;なら
newmadefunction()は1という戻り値をもちます。
そして自作関数の定義では
これらの戻り値である0や1を格納する(メモリの)型を
自作関数の前に表記するというしくみとなっています
この0や1は整数値なので整数値を格納する(メモリの)型
intが
自作関数の前に表記されます。
実際に
自作関数の戻り値を1に設定したいならば
return 1;と表記し
戻り値1を格納する型intを
newmadefunction(void)の前につけます。
ですので
自作関数の定義は
int newmadefunction(void){
cout << "今日もよいC++言語日和です。" << "\n";
return 1;
}
となります。
もちろん 戻り値が1となっただけですので
自作関数
void newmadefunction(void){
cout << "今日もよいC++言語日和です。" << "\n";
return ;
}
を
int newmadefunction(void){
cout << "今日もよいC++言語日和です。" << "\n";
return 1;
}
と
自作関数newmadefunction()の戻り値を1にしても
newmadefunction();
が実行されると
コマンドプロンプト画面に
今日もよいC++言語日和です。
が
表示されることになります
次の
1と2のプログラムでは
👇
1.
#include <iostream>
using namespace std;
void newmadefunction(void){
cout << "今日もよいC++言語日和です。" << "\n";
return ;
}
int main (){
newmadefunction();
return 0;
}
プログラムの実行結果
今日もよいC++言語日和です。
2.
#include <stdio.h>
int newmadefunction(void){
cout << "今日もよいC++言語日和です。" << "\n";
return 1;
}
int main (void){
newmadefunction();
return 0;
}
プログラムの実行結果
今日もよいC++言語日和です。
👆
どちらも
同じプログラムの実行結果
今日もよいC++言語日和です。
となります。
🐤 🐤 🐤 🐤 🐤 🐤 🐤 🐤 🐤 🐤
さあ、おまちかね
void newmadefunction(void){
cout << "今日もよいC++言語日和です。" << "\n";
return;
}
と自作関数newmadefunctionの定義が行われた場合は
newmadefunction();
が実行されたとき
newmadefunction()はどのような戻り値をもつのでしょうか?
自作関数の定義において
return;
と設定されている場合は戻り値を自作関数はもたないことになっています。
ですので
自作関数newmadefunction()は戻り値をもちません。
戻り値を持っていないので
void newmadefunction(void)
と
自作関数newmadefunction(void)のまえにvoidがつけられています。
voidは数値を格納しない型を表していて
戻り値を格納しません。
ですので
void newmadefunction(void){
cout << "今日もよいC++言語日和です。" << "\n";
return;
}
を
int newmadefunction(void){
cout << "今日もよいC++言語日和です。" << "\n";
return;
}
のように
voidでなくintを記述して
プログラムを実行すると
int型(のメモリが用意されている状態)なのに
int型のメモリに戻り値が格納されないままとなるので
#include <iostream>
using namespace std;
int newmadefunction(void) {
cout << "今日もよいC++言語日和です。" << "\n";
return;
}
int main() {
newmadefunction();
return 0;
}
プログラムの実行結果
エラー C2561 'newmadefunction': 関数が値を戻すように宣言されていますが、関数定義に 'return' ステートメントがありません。
と表示されます
つまりreturnにより返されるステートメント(データ)がないと表示されています
このようなエラーが表示されないように
自作関数の定義で
return;
と記述して
戻り値が自作関数に返されないときは
int newmadefunction(void)でなく
void newmadefunction(void)と
記述しなければならないんだね。
どうかな? みんな わかったかな」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます