C言語は、すべてが関数である。
-
- main( ) も実は関数
プログラムを実行するとmain関数から実行され、プログラムの起点となる特別な関数です。 - 標準ライブラリ関数
printf( )は stdio.h で利用可能
rand( )は stdlib.h で利用可能 - ユーザ定義関数
ユーザが独自に作成できる
よく使うプログラムのまとまりをひとつにして、簡単に利用できるようにしたもの。
- main( ) も実は関数
標準の関数だけでは同じ作業を何度も繰り返すとプログラムが長くなるため、ユーザ定義関数を用いる事により繰り返し部分が一つになりこの部分の動作確認も一つで済む。プログラム作業の効率化もはかれ、分担作業も可能になりチームでプログラム開発が可能になります。
関数を利用するには、2つの手順が必要です。
-
-
- 関数を定義
戻り値の型 関数名 (型 変数名)
int mult ( )
{
}関数とは、与えられた値を指示どおりに処理し、結果を返します。
- 戻り値 引数がない時void kannsuu (void) void kannsuu ()でも可
{
printf(“Hello World\n”);
return; return は省略可
} - 戻り値がなく 引数がある時関数が値を返す必要のない時は、戻り値の型はvoidと指定する
void : 「空の」という意味void kannsuu (int a)
{
printf(“引数の値は%d\n”,a);
return; return 省略可
} - 戻り値 引数がある時
int kannsuu (int a ,int b) a、bが引数の値を受け取る
{
int x;
x=a+b;
return x; return 関数を終了して、後に続く値を返す「return (x);」とも書く
}
- 戻り値 引数がない時void kannsuu (void) void kannsuu ()でも可
- 関数の呼び出し方法
関数を呼び出す時、必要に応じて引数を関数に渡し関数が処理し戻る値があれば値を返します。
- 関数を定義
-
- 戻り値 引数がない時
関数名();
kannsuu();
- 戻り値がなく 引数がある時
関数名(引数);
kannsuu(3);
《 test043.c 》
#include <stdio.h>
void kannsuu(int a)
{
int x;
x=a+5;
printf("値 %d",x);
}
int main()
{
kannsuu(3);
}
結果
- 戻り値 引数がある時
戻り値=関数名(引数,引数);
z=kannsuu(3,5);
※ 引数を関数に渡し関数が処理し戻る値があれば値を戻り値 x に返します。
《 test044.c 》
#include <stdio.h>
int kannsuu(int a,int b)
{
int z;
z=a*b;
return z;
}
int main()
{
int x;
x=kannsuu(3,5);
printf("値 %d",x);
}
関数 の プロトタイプ宣言とは、プログラムを実行すると基本上から順に実行されます。
ユーザ定義関数を用いる場合は
-
-
-
- ユーザ定義関数 ⇒ main関数 そのまま実行出来ます。
- main関数 ⇒ ユーザ定義関数 このままでは実行出来ません。
-
-
の2種類があります。
main関数 ⇒ ユーザ定義関数 の順でプログラムを記載すると実行出来ません。
そこでプロトタイプ宣言をmain関数の前に置き、
プロトタイプ宣言 ⇒ main関数 ⇒ ユーザ定義関数
の順でプログラムを記載するとユーザ定義関数が実行できます。
main関数は大きな流れだと考えればいいでしょう。同じ事を何度も書くよりユーザ定義関数を用いて同一処理をはユーザ定義関数でやらせることにより、プログラムが簡素化やミスも減らせます。しかし、ユーザ定義関数はmain関数から呼び出して使用するため、main関数より前に置く必要がありません。そこで、ユーザ定義関数は動作がしっかりすれば、main関数より後ろに置くことにより作業効率が上がります。そのためにプロトタイプ宣言が必要になります。
関数 プロトタイプ宣言 方法
戻り値の型 関数名 (型);
int kannsuu (int) ;
《 test045.c 》
#include <stdio.h>
int kannsuu(int ,int);
int main()
{
int x;
x=kannsuu(3,5);
printf("値 %d",x);
}
int kannsuu(int a,int b)
{
int z;
z=a*b;
return z;
}
結果
変数のスコープとは変数が使える有効範囲のこと言います。
-
- ローカル変数
ローカル変数とは、それぞれの関数で宣言下変数はその関数内でしか使用できない
main関数 と ユーザ定義関数で同じ変数を使ってもデータのやり取りは出来ません。
- グローバル変数
グローバル変数とは、関数外で作られた変数を言い、宣言された変数は定義したすべての関数から参照できます。
- ローカル変数
- ローカル変数とグローバル変数の変数名が同一の場合はローカル変数が優先になります。
- ローカル変数は各関数で作られた範囲内
- グローバル変数はプログラム全体
グローバル変数 の定義方法
だだ変数を選択するだけですが、#includeの直下に宣言した方がいいです。
《 test046.c 》
#include <stdio.h>
int a=1;
int b=2;
int c=3;
void kannsuu()
{
int z;
printf("② %d \n",b);
z=c;
printf("③ %d \n",z);
}
int main()
{
int c=5;
printf("① %d \n",a);
kannsuu();
printf("④ %d \n",c);
}
結果
①②③ は グローバル変数が各関数に参照出来ます。
④ 同じ変数名の時はローカル変数の5が表示されます。