C Primer Plus学習_33第九章------関数関数の初認識(上)
3194 ワード
第九章------関数
この章では、次の内容について説明します.
復習関数
関数(function)は、特定のタスクを完了する独立したコード単位である.Cの関数は、他の言語の関数、サブルーチン、方法、プロセスと同じ役割を果たすが、詳細はやや異なる.printf()のようにデータをスクリーンに印刷する動作を実行する場合もある.いくつかの関数は、strlen()が指定した文字列の長さをプログラムに返すなどの値をプログラムに提供します.
なぜ関数を使用するのですか?
関数は、入力情報(入力)とその生成値や応答の動作(出力)に基づいて定義される「ブラックボックス」と見なすことができる.自分で書いた関数でなければ、一部の関数実装の詳細ではなく、ブラックボックスの内容(printf()など)に関心を持たず、プログラムの全体設計に集中する.
次に、関数を正しく定義する方法、関数を呼び出す方法、関数間の通信を確立する方法について説明します.
この章の最初のプログラム:
/*lethead1.c*/
#include
#define NAME "GIGATHINK,INC"
#define ADDRESS "101 Megabake Plazz"
#define PLACE "Megapolie, CA 94904"
#define WIDTH 40
void starbar(void); //
int main (void)
{
starbar(); //
printf("%s
", NAME);
printf("%s
", ADDRESS);
printf("%s
", PLACE);
starbar();
return 0;
}
void starbar (void){//
int count;
for(count = 1; count <= WIDTH; count++){
putchar('*');
}
putchar('
');
}
実行結果は次のとおりです.
**************************************** GIGATHINK,INC 101 Megabake Plazz Megapolie, CA 94904 ****************************************
分析:
void starbar(void); //
この行にカッコ()が含まれていることは、starbarが名前であるかどうかを示します.最初のvoidは関数タイプであり、関数に戻り値がないことを示します.2番目のvoid(カッコ)は、関数にパラメータがないことを示します.";"これは宣言関数であり、定義関数ではないことを示します.一般的に、関数プロトタイプは戻り値タイプと受信したパラメータタイプを示します.ここではstarbar()という戻り値のない無パラメータ関数を使用して、コンパイラに関数定義を別の場所に探すように伝えます.
starbar(); //
これはvoidタイプ関数を呼び出す形式です.「starbar();「文4では、関数定義が見つかり、実行されます.starbar()のコード計算機を実行すると、main()の次の行に戻ります.
starbar()をブラックボックスと見なす場合、呼び出しに他の情報が必要ないため、「*」の行を印刷して関数に入力する必要はありません.同時にstarbar()も値を返さないので、main()の情報も提供しません.簡単に言えばstarbar()はプライマリ関数と通信する必要はありません.