2012/06/15

C言語 main関数

main(メイン)関数だけのプログラム

int main(void) {
   return 0;
}
最小限のプログラム。実行してもそのまま終了するだけ。下の実行イメージにはWindowsXPの場合の表示例。内容的なものは何もない。
基本的にプログラムはmain関数から始まって、main関数で終了する。関数の範囲は { } 波括弧に囲まれた部分でブロックと言う。 はじめの行の「int main(void)」を見てみると、
「int」は関数の戻り値のタイプを表している。つまりint型の整数をOSに返すことになる。この場合は下の行に書かれている「0」を返している。
「main()」はプログラムの開始位置を宣言している。そのためmain関数が複数存在してはいけない。
「(void)」は引数(ひきすう)がないことを意味する。つまりこのmain関数が開始された時点で何も受け取らない。起動時に何らかの情報を受け取る場合は、ここの記述を変える必要がある。
(int argc, char *argv[]) や (int argc, char **argv) など。
こんな感じで引数を取ることができる。コマンドで起動する場合は、同時に引数も打ち込んだり、ドラッグ&ドロップで起動する場合は、ドロップしたファイル情報などを受け取ることができる。
次の行の「return 0;」は終了を意味する。「0」は正常終了したいことをOSに伝える。0以外では異常終了ということになるが、OSがそれに対してアクションすることは稀のようだ。Windowsの場合は、おそらく無視されている。
c:\>a.exe

c:\>


コマンドライン引数を表示するプログラム

#include <stdio.h>
int main(int argc, char **argv) {
  int i;
  /* 引数の個数表示 */
  printf("argc: %d\n", argc );
  /* 引数の文字列表示 */
  for(i=0; i<argc; i++) {
     printf("argv[%d]: %s\n",i,argv[i]);
  }
  return 0;
}
コマンドライン引数を使うことで、exeの実行時にa.exe Hello Worldと入れると、Hello Worldと表示するプログラム。スペースがあると次の文字列として扱われる。ちなみにargv[0]にはプログラム名が入る。
c:\>a.exe  Hello World
argc: 2
argv[0]: a.exe
argv[1]: Hello
argv[2]: World

c:\>


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