🌞自作関数5 自作関数のプロトタイプ宣言をおこなってから自作関数の定義を行ってみます 

ソーラー


「さあ、今日はどんなプログラムが登場するのかな?


次のプログラムを元気🌞にみていこう。」


#include <iostream>


using namespace std;


void f(int a);


int main() {


f(8);


return 0;

}


void f(int a) {


cout << a << "回目のご飯はNouvel de まぐろです\n";


}


ビルド実行結果


8回目のご飯はNouvel de まぐろです



マックス「void f(int a);?」



ソーラー


「今までの自作関数の定義はint main(){}の前に


自作関数の定義がかかれていたけれども


このプログラムのような


自作関数の定義の記述の仕方もあります


この自作関数の定義の記述の仕方は


まず


int main(){}の前に


さきに


自作関数の定義


void f(int a) {


cout << a << "回目のご飯はNouvel de まぐろです\n";


}


void f(int a);


だけを 記述しておきます。


このように


int main(){}のまえに


void f(int a);を記述することを


プロトタイプ宣言といいます。


自作関数fの定義


void f(int a) {


cout << a << "回目のご飯はNouvel de まぐろです\n";


}

の仕組みをもう1度考察してみようかな。



void f(int a)のように


自作関数fの先頭に


自作関数fに戻り値を返す時の


戻り値を格納する型を記述するのが


自作関数を作るときのルールとなっています。


(この場合は戻り値を格納させないのでvoidを記述しています)


戻り値を格納する型の右隣は 関数名を記述します。


(この場合は 関数名はfとなっていますが


f でなくても自作関数の名前は自由につけることができます )



関数名fのお隣のかっこ()内には


自作関数内で使用される変数の変数宣言を記述します。


この場合は


整数値を格納する


変数aが


自作関数f内で使用されています。


ですので


aの変数宣言


int aを


関数名fのお隣のかっこ()内に


記述します。


あとは


void f(int a) {


cout << a << "回目のご飯はNouvel de まぐろです\n";


}


のように


void f(int a){}の{}内に


自作関数にしたい命令文


cout << a << "回目のご飯はNouvel de まぐろです\n";


を記述して


自作関数fの定義の完成です


自作関数の定義の仕方はこんなのだったよね。。


おおっと


そうそう


int main(){}のまえに


void f(int a);


を記述して


自作関数fのプロトタイプ宣言をおこなったなら


int main(){}の後ろに


自作関数fの定義


void f(int a) {


cout << a << "回目のご飯はNouvel de まぐろです\n";


}

を記述します


では


int main(){}の後ろに


自作関数fの定義を記述するタイプと


今までのように 自作関数fの定義を


int main(){}の前に


記述するタイプとを見比べてみましょう。



自作関数fの定義をint main(){}の前に記述するタイプはどうだったかというと


👇


#include <iostream>


using namespace std;


void f(int a){


cout << a << "回目のご飯はNouvel de まぐろです\n";


}


int main(){


f(8);

return 0;

}


ビルド実行結果


8回目のご飯はNouvel de まぐろです


となっています。


void f(int a); プロトタイプ宣言が


int main(){}の前につくかつかないか


自作関数の定義が


int main(){}の後につくかつかないか



違いでmain関数内は全く同じプログラムですね。


自作関数の定義をint main(){}の前に記述しても


自作関数の定義をint main(){}の後ろに記述しても


自作関数をmain関数内で呼び出して使用するときは


f(8);


で一緒だね。」


てんC「そうなっていますね。」


ソーラー 「ではもうひとつ


自作関数のプロトタイプ宣言をしている


プログラムをみていきましょう。」


#include <iostream>


using namespace std;


void f(void);


int main(){


f();


return 0;

}


void f(void){

cout<<"ご飯はNouvel de まぐろです\n";


}


ビルド実行結果


ご飯はNouvel de まぐろです



ソーラー「


このプログラムの場合でも


自作関数fのプロトタイプ宣言は


void f(void);


自作関数fの定義


void f(void){


cout<<"ご飯はNouvel de まぐろです\n";

}


のvoid f(void)の部分になっています。


自作関数fの定義は


int main(){


f();


return 0;

}


の後に


void f(void){


cout<<"ご飯はNouvel de まぐろです\n";


}



と記述されることになるね。


自作関数fは引数に変数を使用していないので


プロトタイプ宣言


void f(void);


のf()の中にはvoidが記述されます。


そして


変数を使用していない自作関数を


main関数内でよびだして使用するときは


void f(void);のvoidを省いた


f();と記述します。


f(void);


と記述するとビルドエラーになります。」


てんC「そうでした。😊


自作関数の定義内の


cout<<"ご飯はNouvel de まぐろです\n";には


引数として数値を受け取る変数がつかわれていないですね。」


ソーラー


「そうなんです。


数値を受け取る変数を()の中に引数としてもっていないんです。


つまり


自作関数fは数値を受け取ったりすることはないというわけで


自作関数fの定義では


void f(void)と()の中がvoid(数値を受け取らない、数値を格納しない型)


になるのでしたね。


このタイプの自作関数をmain関数内でよびだして使用するときは


f(void);でなくf();と記述する・・・ 


ここがポイントかな?


それにしても


メイン関数 int main (){}の外側の領域は


まるで自作関数置き場みたいだね。


これで大量に自作関数がおけるぞぉぉ」


てんC「これから どんな プログラムが作れるか楽しみですね。」


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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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