自作関数のなかに自作関数を格納する 自作関数の2重入れ子  その1

ソーラー「今度は自作関数の中に自作関数を


 格納してみま~す。


先程は 文章のみを表現する自作関数Sentense をつくったよね。


それをつかってみよう。


まずは 次のプログラムをみてよ」



#include <stdio.h>


void Sentense1 (void){

printf("おはようございます\n");

return;

}


void Sentense2 (void){

printf("こんにちは\n");

return;

}


void Sentense3 (void){

printf("こんばんは\n");

return;

}



int main(void){

Sentense1 ();

Sentense2 ();

Sentense3 ();

return 0;

}

コンパイル結果


おはようございます

こんにちは

こんばんは


アレサ「綺麗に自作関数


Sentense1 ();

Sentense2 ();

Sentense3 ();


がならんでいますの。


main関数内で使用されるとき


Sentense1 ();

Sentense2 ();

Sentense3 ();


のように記述される自作関数

Sentense1

Sentense2

Sentense3



引数内に変数を持たないタイプでしたね。」



ソーラー「これを 自作関数Sentense3 の中に


自作関数Sentense1,Sentense2 を格納して


まとめると


#include <stdio.h>


void Sentense1 (void){

printf("おはようございます\n");

return;

}


void Sentense2 (void){

printf("こんにちは\n");

return;

}


void Sentense3 (void){

Sentense1 ();

Sentense2 ();

printf("こんばんは\n");

return;

}



int main(void){


Sentense3 ();

return 0;

}

コンパイル結果


おはようございます

こんにちは

こんばんは


ソーラー

「 っと こんな具合に


Sentense3 ();


と1行 記述するだけで


おはようございます

こんにちは

こんばんは


がprintf表示できるようになるんだ。


このプログラムの流れは


まず


自作関数Sentense1

自作関数Sentense2

を定義して作製し


そうして作製された自作関数

Sentense1

Sentense2



このように自作関数Sentense3の定義に取り込んで

void Sentense3 (void){

Sentense1 ();

Sentense2 ();

printf("こんばんは\n");

return;

}


自作関数Sentense3を作製しています


普通の関数とおなじように


自作関数

Sentense1

Sentense2 を


自作関数Sentense3 にとりこんじゃったってわけさ(^o^)/


自作関数

Sentense1

Sentense2

を定義して作製してからでないと


自作関数Sentense3 にとりこむことはできないので


自作関数

Sentense1

Sentense2

の定義


void Sentense1 (void){

printf("おはようございます\n");

return;

}

void Sentense2 (void){

printf("こんにちは\n");

return;

}


void Sentense3 (void){

Sentense1 ();

Sentense2 ();

printf("こんばんは\n");

return;

}

の前に 記述するようにしてください。


こんな具合に さきに


void Sentense3 (void){

Sentense1 ();

Sentense2 ();

printf("こんばんは\n");

return;

}

を記述してしまうと


#include <stdio.h>


void Sentense3 (void){

Sentense1 ();

Sentense2 ();

printf("こんばんは\n");

return;

}


void Sentense1 (void){

printf("おはようございます\n");

return;

}


void Sentense2 (void){

printf("こんにちは\n");

return;

}


int main(void){


Sentense3 ();

return 0;

}

コンパイル結果

ファイル「C:/Users/solarplexuss/AppData/Local/EasyIDEC/project/iii/main.c」の

「10行目」で記述エラーを発見しました。

「Sentense1」が再定義されています。以前と同じ名前を使っていないか、関数の記述順番は正しいかどうかを確認してください。


とコンパイルエラーが出てきます」











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

作者を応援しよう!

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

応援したユーザー

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