【C言語】 関数 & プロトタイプ宣言 & 変数のスコープ

関数
関数とは、与えられた値を指示どおりに処理し、結果を返します。
関数

C言語は、すべてが関数である。
 ​  

    • main( ) も実は関数​
      プログラムを実行するとmain関数から実行され、プログラムの起点となる特別な関数です。
    • 標準ライブラリ関数
      printf( )は stdio.h で利用可能
      rand( )は stdlib.h で利用可能
    • ユーザ定義関数​
      ユーザが独自に作成できる​
      よく使うプログラムのまとまりをひとつにして、簡単に利用できるようにしたもの。

   

  標準の関数だけでは同じ作業を何度も繰り返すとプログラムが長くなるため、ユーザ定義関数を用いる事により繰り返し部分が一つになりこの部分の動作確認も一つで済む。プログラム作業の効率化もはかれ、分担作業も可能になりチームでプログラム開発が可能になります。

関数の定義

関数を利用するには、2つの手順が必要です。
  

      1. 関数を定義
         
        ​戻り値の型 関数名 (型 変数名)​
        ​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);」とも書く
          }
             ​

      2. 関数の呼び出し方法
        関数を呼び出す時、必要に応じて引数を関数に渡し関数が処理し戻る値があれば値を返します。
          
  • 戻り値 引数がない時
      
    関数名();
     
    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;
}
 
結果
  

     

  
結果

       
      ①②③ は グローバル変数が各関数に参照出来ます。
      ④ 同じ変数名の時はローカル変数の5が表示されます。

 

 

 

目次