• ベストアンサー

int void (main)の意味・・・

Oh-Orangeの回答

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★main() 関数の定義例 ・(1)void main( void )  (2)void main( int argc, char *argv[] )  (3)void main( int argc, char *argv[], char *env[] )  (4)int main( void )  (5)int main( int argc, char *argv[] )  (6)int main( int argc, char *argv[], char *env[] )  上のように main() 関数の定義にはバリエーションがあります。 ・学校で習っているものは(1)ですね。私は普段(4)か(5)を使います。  基本的に戻り値には void にしない方針です。 ・それで(1)と(4)の違いは戻り値を戻せるかどうかの違いです。  普通コマンドラインから実行したプログラムが int main() 関数を抜けると  呼び出しもとのOS(Windowsなど)に終了コードが返されます。この終了コードは  バッチファイルなどで利用したり出来るため int main() 関数でリターン値に  意味が出てきます。でも終了コードを特に必要としない(意識しない)場合は  強制的に『0』を戻したり、あるいは最初から void main() として定義します。  『void』とすると main() 内では戻り値を返せなくなりますが、返す必要が  無いために void にしているので構いません。なお、OS とかには終了コードは  未定義のデタラメの値が返されることになります。終了コードを利用しないので  やはり問題ありませんね。 ・よって void main() と int main() の違いは main() 関数がリターン値として  値を戻すと呼び出し元(OS や他の親プロセス)に終了コードを渡せるかどうかの  違いです。バッチファイルなどで『IF ERRORLEVEL 数値 命令』という感じで  使わせるプログラムの場合は int main() と戻り値を返せる状態で定義します。  そして return 数値; とすることでプログラムが終了したときに終了コードを  バッチファイルで受け取れるようになるのです。 ・学校で習っているサンプル・プログラムではそこまで考えて作ることは無いためか  void main() としているのでしょう。参考書の方は int main() となっていますが  多分すべて return 0; を返していませんか?私も終了コードを必要としない場合でも  void main() ではなく int main() と定義して使います。使う理由は『0』を正常に  終了したという意味ではっきりと呼び出し元に返すためです。例え『0』しか返さなくても  そうしてしまいます。癖かな。 その他: ・上記の(2)、(5)はコマンドラインから引数文字列を受け取るときの指定です。  上記の(3)、(6)はコマンドラインの引数以外に環境変数の文字列テーブルを受け取れる指定です。  ただし、(3)、(6)は処理系によってサポートされていないこともあります。 ・どの処理系でもきちんと利用できるのは(1)、(2)、(4)、(5)の4つだけです。  それ以外は処理系で自由に決められた文字列を受け取れたりします。なので上記の(3)、(6)は  とある処理系の場合のことを書いたのです。よって移植性も考えると(3)、(6)以外にします。 ・以上。

noname#58398
質問者

お礼

びっしり書いてくださってありがとうございます。 他のmain()のパターン書いてくれたので、「こういうのがあるんだとなぁ」と勉強になりました。 回答ありがとうございました。

関連するQ&A

  • int main()、void main()、void main(void)、int main(void)

    今日、大学でC言語の講義の時間、先生が、 #include <stdio.h> void main(void){ } と宣言してプログラムを書くと教えていました。 main関数には、 main() void main() void main( void ) int main() int main( void ) と、人によりいくつかの描き方があったりします。 どれが本当は正しいのでしょうか? void mainはすべきではないとなんかの本で読んだのですが・・。

  • int main(void)

    C言語の問題集をやっているのですが、 本にはmain関数の最初にint main(void)のような書き方が してあります。 学校ではmain() と習ったのですが、本には上のようにかいてあります。 どのように違うのでしょうか? というかmain関数のところに引数が入っている意味がわかりません。 どういうことがというと(void)ってなんですか? またint mainというのはint型の関数だと思うのですが、 なかではdouble型とかも使えます。 お願いします。

  • main()とint main(void)の違い

    最初main()と習ったのですが、最近学校でmain()ではなくint main(void)を使うように なりました。 どのように違うのでしょうか? main関数のところに引数が入っている意味がわかりません。 (void)ってなんですか? そもそも引数って何ですか? あと、プログラムの最後にreturn(0)って書いてあるんですが、これはどういう意味ですか? 回答よろしくお願いします。

  • int main(void) の意味について教えて下さい

     お早う御座います、Cの初心者です、宜しくお願いします。  最初にmain関数は、「int main(void)」という風に始まりますが 、main関数がstring型をとる場合とか、実際に他の関数から呼ばれる場合は有るのでしょうか。

  • int型 void型について

    C初心者です。 「int main(voido)」や「void main(void)」がよくわかりません。 int、void、(void)とは返り値を返す、返さないということが理解できません。小学生でもわかる説明をしていただけないでしょうか? よろしくお願いいたします。 

  • int main(int argc, char* argv[]) についての質問

    こんにちは.つね日ごろ思っている質問させてください. Cの参考書には, (1) void main(void) { } (2) int main(int argc, char* argv[]) { return 0; } の2つのパターンが記載されていますが, どういう違いがあるのでしょうか? (1)の場合main関数は,型を持たず,引数も持たない. ※Turbo Cなどのコンパイラーでは, return文がないと警告出ます. (2)の場合は,int 型をかえし,引数はint型 変数と char型ポインタ配列(?) を指定している. といったくらいしか分かりません. (2)に関してもう少し述べれば, コマンドラインからファイルを指定し,実行することが できると勉強した記憶があるのですが, 理解があいまいです. 特に(2)の場合のmain関数の意味と,その使い方について アドバイスお願い致します.

  • void main (void)について、、、

    またまたすみません。 プログラムを書くときに、   void main (void)   と、とりあえず最初にこれを書く、と覚えていて意味がわかりません。 小学生でも理解できるくらいに噛み砕いて説明をお願いします。

  • int main()の・・・

    初心者です。 ものすごく基本的な質問なんですが、 int main() のint型は、どういった意味なんでしょうか? char main() はだめなんでしょうか? それと ()内意味はなんでしょうか? よろしくお願いします。

  • void **(char や intのアドレス混在)について

    printf("%d",voidd[0]);にてほしい値が表示されません。 どうすればいいですか? よろしくお願いします。 #include<stdio.h> int main() { /* Calc.StringExpressionGet("1+((2+34)*2-111*77)*5-67*8/90"); Calc.StringExpressionResolve(); Calc.Print(); */ int num[3]; num[0]=111; num[1]=222; num[2]=333; char str[4]="ABC"; void **voidd; voidd=new void*[6]; voidd[0]=(void *)&num[0]; voidd[1]=(void *)&str[0]; voidd[2]=(void *)&num[1]; voidd[3]=(void *)&str[1]; voidd[4]=(void *)&num[2]; voidd[5]=(void *)&str[2]; printf("%d",voidd[0]); getchar(); return 0; }

  • int とcharの使い方と違い

    教えてgooに投稿するのは初めてですがよろしくお願いします。 最近C言語を勉強し始めた初心者です。 ネットのサイトを見て独学でしています。 過去スレッドをさらっと見て聞きたいことが書いてなかったので投稿します。(同じスレッドがあったらすみませんOTL) #include<stdio.h> int main(void) { int str='a'; printf("str=%c\n",str); return0; } この上のプログラムでは str=a と出て、エラーが出ずにコンパイル出来ました。でも、 #include<stdio.h> int main(void) { int str[]="abc"; printf("str=%s\n",str); return0; } とするとエラーが出ます。 int とcharの使い方と違いについて詳しく教えてほしいです>< お願いします。