2012/04/26

C言語 関数 function

C言語は関数という単位で構成されている。関数は処理のまとまりであり、それらを組み合わせることでプログラムが作られている。プログラムを書くことは、そのまま関数を書くことになる。main(){}がひとつの関数であり、プログラムのスタート地点となる。main関数の中にダラダラと複数の処理を書くことも可能であるが、作った関数の再利用や、保守性などを考えると、機能ごとに分けたほうがよい。簡単なサンプルで解説してみる。(子供に説明するために作ってます。)

main関数のみの例

/* Cを書く上で最低必要な標準関数 */
#include <stdio.h>
/*三角形の面積を求める voidは引数を取らない*/
int main(void){
  int x = 10; /*底辺*/
  int y = 12; /*高さ*/
  /*三角形の面積を計算して出力*/
  printf("三角形の面積= %d\n",x*y/2);
  return 0;/*プログラムの終了 無事終了=0を返す */
}
三角形の面積を求めるプログラムをmain関数の中で行っている。結果は以下の通り。
三角形の面積= 60


上記をmain関数とcalc関数の2つに分ける

#include <stdio.h>
/*calc関数 三角形の面積を求めて表示 
voidは戻り値がないことを宣言。 
()内は仮引数(parameter) コピーされた値 */
void calc(int a,int b){
  /*三角形の面積を計算して表示*/
  printf("三角形の面積 %d\n",a*b/2);
  return;  /*処理後値なしでmainに戻る 本来省略*/
}

/*メイン関数 プログラムは、ここからスタート*/
int main(void){
  int x = 10;
  int y = 12;
  /*値をcalc関数に渡し、処理はcalcへ移る */
  calc(x,y);/* ()の中が引数(argument) 値渡し。*/
  /*calc関数終了後returnで、ここに戻ってくる */
  return 0;/*プログラムの終了*/
}
main関数からcalc関数に値を渡して calc関数で表示させている。その後main関数に戻ってプログラムは終了する。calc関数に渡す値を引数(argument)という。実際には値はコピーされて渡されている。これを値渡し(call by value)という。
三角形の面積= 60


結果をmainに戻す 戻り値(return value)

#include <stdio.h>
/*calc関数 三角形の面積を計算*/
int calc(int a,int b){ /*戻り値があるのでint が付く*/
  /*三角形の面積を計算*/
  int c;
  c=a*b/2;
  return c;  /*戻り値 mainへ結果を戻す*/
}

/*メイン関数 プログラムスタート */
int main(void){
  int x = 10;
  int y = 12;
  /*calcで計算して結果を戻して表示*/
  printf("三角形の面積= %d\n",calc(x,y));
  return 0;/*プログラムの終了*/
}
main関数からcalc関数に値を渡して計算して、その結果をmain関数に戻して表示させる。calc の return c; の部分が戻り値(return value)となる。calc()関数は int calc()となり、戻り値があることを宣言している。
三角形の面積= 60


関数を増やしてみる

#include <stdio.h>
/*calc1関数 三角形の面積を計算*/
int calc1(int a,int b){
  int c;
  c=a*b/2;
  return c;  /*戻り値 mainへ結果を戻す*/
}

/*calc2関数 四角形の面積を計算*/
int calc2(int a,int b){
  int c;
  c=a*b;
  return c;  /*戻り値 mainへ結果を戻す*/
}

/*メイン関数 プログラムスタート */
int main(void){
  int x = 10;
  int y = 12;
  printf("三角形の面積= %d\n",calc1(x,y));/*三角形面積の計算*/
  printf("四角形の面積= %d\n",calc2(x,y));/*四角形面積の計算*/
  return 0;/*プログラムの終了*/
}
三角形と四角形の面積を別々の関数で用意してみた。このように機能ごとに関数を増やして、必要に応じて呼び出せば見通しもよく便利になる。
三角形の面積= 60
四角形の面積= 120


C言語 ANSI C89 Meadow & MinGW GCC 目次はこちら