ここから本文です

C言語を勉強し始めて少し経ちました。 インクルートを定義した後に、今までは...

gya********さん

2006/1/2019:01:24

C言語を勉強し始めて少し経ちました。

インクルートを定義した後に、今までは考えもなく、

int main (void)

とかいてそれ以下に簡単な演算をさせて練習してきました。
しかし今回、

int main (int argc , char **argv)

というのが出てきてしまいました。
これまではvoidと記入してこの行がそうたいして意味のないも
のぐらいの勢いでプログラムを作っていきました。
たまにプログラムの最後にreturn 0;と書かないとうまくいか
ない時もありました。
どういう時にどう使えばいいのですか?
ちなみに今回は何なんでしょう?

閲覧数:
1,651
回答数:
4

違反報告

ベストアンサーに選ばれた回答

gla********さん

2006/1/2109:13:23

Windowsを含むたいていのOSでは、プログラムが終了したときの状態を整数値で示すことがよくあります。Windowsの場合はERRORLEVELという環境変数に設定されます。バッチファイルのIF文で%ERRORLEVEL%の値を調べて、処理を継続したりエラー処理をしたりするときに使われる値です。

小うるさい理屈を言えば、main()関数をintとvoidのどちらで宣言するかはC言語の問題ではなく、実行環境の問題ということになります。どちらで宣言してもC言語としては間違えではありませんが、初めに述べたようにたいていのOSが終了ステータスの仕組みを備えているので、int型で宣言して値を返すようにしたほうがいいでしょう。正常終了時に0、エラーなどの場合は0以外の正の小さな整数値を返すことが普通です。UNIXとの互換性の上では0~127の間の値を返すようにしたほうが無難です。

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

sug********さん

2006/1/2411:09:19

余り詳しいほうではないので、前半部分だけですが・・・

int main(void)というのは、
戻り値の型 関数名(引数の型)という構成になっています。
voidとは、「引数を渡しません」という意味で、
main関数の外からの入力は無いことを意味します。
で、return ○;とは、「戻り値として○を返します」という意味です。
環境によって違うかも知れませんが、
mainをint型で宣言した場合はreturnが必要で
mainをvoid型で宣言した場合はreturnが必要ありません。

pp6********さん

2006/1/2110:45:46

サブルーチンなら親ルーチンとの値の受け渡しに使います。
mainの場合はシステムとのやりとりになります。
mainの戻り値はMSDOSの場合、ERRORLEVELというパラメーターに自動で設定されます。
必要ない場合はvoid main()と宣言して下さい。
argcはプログラムを呼び出した(起動した)ときの引数の数+1、argvは引数を格納したテーブルです。

wis********さん

2006/1/2022:16:09

起動時にパラメータを指定できるようになります。
test.exeを作った時、コマンドプロンプトから
test abc 123
として起動すると、argc=3, *argv[0]="(パス名)\test.exe", *argv[1]="abc", *argv[2]="123" という風に設定されます。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる