点数を読み込んで合格者(60点以上)の一覧を表示するプログラム
#include <stdio.h> int tensu[5]; void prt(int ten); // 関数原型宣言 int main(void) { extern int tensu[]; int i; puts("5人の点数を入力してください。"); for (i = 0; i < 5; i++) { printf("%d:", i + 1); scanf("%d", &tensu[i]); } puts(" 合格者一覧表 "); puts("------------- "); prt(60); return (0); } /*--- 配列tensuの中で値がten以上の要素を表示 ---*/ void prt(int ten) { extern int tensu[]; int i; for (i = 0; i < 5; i++) if (tensu[i] < ten) ; // 何もしない else printf("tensu[%d] = %d\n", i, tensu[i]); // 表示を行う }
実行結果
5人の点数を入力してください。
1:68
2:72
3:60
4:81
5:43
合格者一覧表
-------------
tensu[0] = 68
tensu[1] = 72
tensu[2] = 60
tensu[3] = 81
定義でもある宣言
関数の外で変数や配列の実体を作り出す宣言を、定義でもある宣言という。
定義ではない宣言
実体を作り出すことがない宣言を、定義ではない宣言という。
この場合、externをつけて宣言する。
extern int tensu[];
「どこかで作られているtensuを使いますよ」という意味である。
関数原型宣言(=プロトタイプ宣言)
ある関数の定義を、main関数より後ろ側に配置する場合、その関数のことをmain関数に教えなければならない。
その場合、関数の返却値型や、仮引数の型や個数などを明確に記述した宣言を行う。
これを関数原型宣言(プロトタイプ宣言)という。