伝統形式
古き時代の仮引数宣言
これまで紹介した仮引数の宣言方法 関数名(引数リスト) という書式は比較的新しい方式です
これはANSI C標準でC言語が標準化されたときに導入されたもののようです
では、それ以前の仮引数の宣言はどのように行われていたのでしょうか?
ANSI C標準以前の宣言方法を伝統形式や旧方式というように呼ばれています
この方式による宣言は現代のコンパイラでも可能です
さらに、過去のC言語のソースで伝統形式が使われているものを見かけることがあるかもしれません
ここで、伝統形式の仮引数宣言を覚えておきましょう
もちろん、新しいプログラムには新しい方式で記述するべきだとされるので
これから皆さんが作っていくプログラムに関してはANSI C標準の最新の宣言方法を用いるべきです
あくまで、過去に作られたC言語ソースを読めるようになるためです
伝統形式による仮引数宣言の書式は以下のようになります
戻り値型 関数名(仮引数名1 , 仮引数名2 , 仮引数名n...)
型 仮引数名1;
型 仮引数名2;
型 仮引数名n;
.
.
.
{
ステートメント;
}
大きく違うのは、引数リストで仮引数となる変数名しか宣言しないということです
その後、コードブロックに入る前にそれぞれの仮引数に型を宣言するという形になっています
仮引数の型が同じ型であれば、通常の変数の宣言同様にカンマ「 , 」で区切って一度に宣言できます
void finction(var1 , var2)
int var1 , var2...
伝統形式による仮引数宣言を用いたサンプルを見てください
#include <stdio.h>
int max(int , int );
int main() {
int r_var , var1 , var2;
printf("最初の値を入力してください>");
scanf("%d" , &var1);
printf("比較する値を入力してください>");
scanf("%d" , &var2);
r_var = max(var1,var2);
printf("%dのほうが大きいです",r_var);
return 0;
}
int max(var1 , var2)
int var1,var2;
{
if (var1 > var2) return var1;
if (var2 > var1) return var2;
else return var1;
}
max()関数は、与えられた二つの値を比較し、大きい方を返します
max()関数の宣言部分に注目してください
引数リストでは変数名だけを宣言し、その後その変数の型を宣言しています
このように、伝統形式では宣言が2部にわたって行われていたことがわかりますね