🌞なぜvoid newmadefunction(void){printf("今日もよいC言語日和です。¥n"); return ; } と自作関数が記述されるのでしょうか?returnに注目☆


ソーラー「今度は自作関数newmadefunctionの定義


void newmadefunction(void){


printf("今日もよいC言語日和です。\n");


return;

}


において

なぜ

return;

になっているのかについて考察してみるよ。


この自作関数 newmadefunction()の定義では


return;


と記述されています


なぜreturn 0;


でないのでしょうか?


そもそも


なぜ自作関数の定義に


return;

がついてくるのでしょうか?


そもそもreturn 0;


とはなんのためにあるのでしょうか?


void newmadefunction(void){


printf("今日もよいC言語日和です。\n");


return;

}


でなく



void newmadefunction(void){


printf("今日もよいC言語日和です。\n");


}


で十分な


気がします。」



アレサ「そうですね。ソーラーさん


さあ なぜ


return;


が自作関数の定義に記述されているのか


その答えは・・・」


ソーラー「みんな 知りたいか~い?」


アレサ「みなさん おまちかねですの」


ソーラー「注目 僕にあつまってるのかな?」


アレサ「はいっ😊 もちろんあつまっていますの」



ソーラー「その答えは


関数の仕組みにあるのです。


さきのエピソードでもみてきたように


関数は戻り値をもつよう設定されています


printf関数もscanf関数も戻り値をもっています、


自作関数を自分で作成する場合


戻り値をどのような値にするかは自分で設定することができます。


今の自作関数newmadefunctionの定義は


void newmadefunction(void){


printf("今日もよいC言語日和です。\n");


return;

}


となっています。


この場合


自作関数newmadefunction()


の戻り値はどのような値になっているのでしょうか


🌞🌞🌞🌞🌞🌞🌞🌞

自作関数newmadefunction()を実行するときは


newmadefunction(void);

でなく

newmadefunction();


と記述してください


newmadefunction(void);

と記述すると

エラーとなります。

            

                     solarplexussより

🌞🌞🌞🌞🌞🌞🌞🌞


実は


自作関数newmadefunction()が


newmadefunction();


のように実行された場合


自作関数newmadefunction()に


戻り値をもつよう設定することができます


自作関数newmadefunction()の戻り値は


returnによって自由に設定することができます


もしreturn 0;なら


newmadefunction()は0という戻り値をもちます。


もしreturn 1;なら


newmadefunction()は1という戻り値をもちます。



そして自作関数の定義では

これらの戻り値である0や1を格納する型を

自作関数の前に表記するというしくみとなっています


この0や1は整数値なので整数値を格納する型 intが

自作関数の前に表記されます。


実際に


自作関数の戻り値を1に設定したいならば


return 1;と表記し


戻り値1を格納する型intを


newmadefunction(void)の前につけます。


👇ここです newmadefunction(void)



ですので


自作関数の定義は


int newmadefunction(void){


printf("今日もよいC言語日和です。\n");


return 1;

}


となります。


もちろん 戻り値が1となっただけですので


💖パターンその1💖


もとの戻り値を設定しない自作関数の定義


void newmadefunction(void){

printf("今日もよいC言語日和です。\n");

return ;

}



💖パターンその2💖


戻り値を1に設定した自作関数の定義


int newmadefunction(void){

printf("今日もよいC言語日和です。\n");

return 1;

}


が用いられた

以下の


💖パターンその1💖

💖パターンその2💖


のプログラムを実行しても

👇


💖パターンその1💖

#include <stdio.h>


void newmadefunction(void){

printf("今日もよいC言語日和です。\n");

return ;

}


int main (void){

newmadefunction();

return 0;

}


プログラムの実行結果


EAZY IDECの場合

今日もよいC言語日和です。


Visual Studioの場合

今日もよいC言語日和です。



💖パターンその2💖

#include <stdio.h>


int newmadefunction(void){


printf("今日もよいC言語日和です。\n");


return 1;

}


int main (void){

newmadefunction();

return 0;

}


プログラムの実行結果


EAZY IDECの場合

今日もよいC言語日和です。


Visual Studioの場合

今日もよいC言語日和です。


👆


のように


どちらも


        😊同じプログラムの実行結果😊


      😊今日もよいC言語日和です。😊


が表示されることになります



🐤 🐤 🐤 🐤 🐤 🐤 🐤 🐤 🐤 🐤


さあ、おまちかね


void newmadefunction(void){

printf("今日もよいC言語日和です。\n");

return;

}



自作関数newmadefunctionの定義が行われた場合は


newmadefunction()はどのような戻り値をもつのでしょうか?


自作関数の定義において


return;


と設定された場合は


自作関数が


newmadefunction();


のように実行されても


戻り値を自作関数はもたないことになっています。


自作関数に戻り値は返されないとも言います



ですので


自作関数が


newmadefunction();


のように実行されても


自作関数newmadefunction()は戻り値をもちません。



        🌞戻り値を持たない場合は🌞


自作関数newmadefunctionの定義において


void💖 newmadefunction(void)

👆ここです


記述することになります


自作関数newmadefunction(void)のにvoidがつけられていますね


voidは数値を格納しない型を表していて


戻り値を格納しません。


自作関数newmadefunctionの型はvoidに設定されたというわけです


このように


自作関数には


int

void


などの型を設定するというルールがあります




次に


自作関数newmadefunctionの型を


void newmadefunction(void){

printf("今日もよいC言語日和です。\n");

return;

}

でなく


int newmadefunction(void){

printf("今日もよいC言語日和です。\n");

return;

}

のように


voidでなくintを記述したとします


        intのように


      💖データ格納容量を持つ型が💖


自作関数の型に


設定された場合


💖戻り値が格納されるようにしなければならないというルールがあります💖


戻り値が格納されるようにするには


return;


ではなく


return 0;(0が戻り値として返されます)


return 1;(1が戻り値として返されます)


のように


戻り値を


設定する必要があります


もし


int newmadefunction(void){

printf("今日もよいC言語日和です。\n");

return;

}


と記述した場合


return;


と記述されているので


自作関数newmadefunction()が実行されても


自作関数newmadefunctionには戻り値は返されず


newmadefunction()には戻り値が格納されることはありません


        intのように


      💖データ格納容量を持つ型が💖


自作関数の型に


設定された場合


💖戻り値が格納されるようにしなければならないというルールがある💖


のですが


この自作関数の定義

👇


int newmadefunction(void){

printf("今日もよいC言語日和です。\n");

return;

}


が用いられた


プログラムを実行すると


int型には戻り値が格納されないことになるので


コンパイラによっては


ビルドエラーが表示されることになります


そのことを示すプログラムはこちらです

👇

#include <stdio.h>


int newmadefunction(void) {


printf("今日もよいC言語日和です。\n");


return;

}


int main(void) {

newmadefunction();

return 0;

}


プログラムの実行結果


EAZY IDECの場合


今日もよいC言語日和です。



Visual Studioの場合


エラー C2561 'newmadefunction': 関数が値を戻すように宣言されていますが、関数定義に 'return' ステートメントがありません。


ソーラー「


Visual Studioの場合ではビルドエラーが表示されてプログラムが実行できませんね


Visual Studioの場合では


不完全なプログラムが実行されないよう改良が加えられているのです。


ですので


return;

ではなく

return 1;


のように


戻り値を設定してあげると


プログラムを実行することができます


👇




#include <stdio.h>


int newmadefunction(void) {


printf("今日もよいC言語日和です。\n");


return 1;

}


int main(void) {

newmadefunction();

return 0;

}


プログラムの実行結果(Visual Studioの場合)




どうかな? みんな戻り値の仕組み わかったかな」












  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る