コマンドラインパラメータ付きmain関数の詳細

5152 ワード

著作権声明
  • ブロガー:thunder_fan
  • 声明:水を飲んで井戸を掘る人を忘れないで、転載して出典を明記してください.
  • 連絡先:cllshxz#163 dotcom(メールボックスを正しいフォーマットに変更してください)
  • 説明:このブログの参考、豆丁文庫のドキュメントは、原作者が見つかりませんでした.

  • 本文
    C言語プログラムは関数を構成モジュールとする.main()関数はメイン関数と呼ばれ、1つのCプログラムは常にmain()関数から実行されます.
    一.main()関数の形式
    最新のC 99規格では、次の2つの定義のみが正しい.
        int main(void)//     
        {
         ...
            return 0;
        }
    
        int main(int argc,char *argv[])//     
        {
        ...
            return 0;
        }

    intはmain()関数の戻りタイプを示し、関数名の後ろのカッコには一般的に関数に渡される情報が含まれます.voidは関数にパラメータが渡されていないことを示します.古いバージョンのCコードでは、プログラムはmain()という形で始まることが多いことがわかります.C 90規格はこの形式を許容するが、C 99規格は許容しない.だから、現在のコンパイラが許可しても、そう書かないでください.void main()一部のコンパイラはこの形式を許可していますが、まだ受け入れる基準はありません.C++の親Bjarne Stroustrupは、彼のホームページ上のFAQでvoid main()の定義がC++またはCに存在しないことを明らかにした.したがって、コンパイラはこのような形式を受け入れる必要はなく、多くのコンパイラもこのように書くことを許さない.
    標準を堅持する意味は、プログラムを1つのコンパイラから別のコンパイラに移動すると、正常に動作することです.
    二.main()関数の戻り値
    main()関数の戻り値タイプはintタイプであり、プログラムの最後のreturn 0であることは前述した.これに対応して、0はmain()関数の戻り値です.では、この0の戻り値はどこに戻りますか?オペレーティングシステムに戻り、プログラムが正常に終了したことを示します.return文は通常プログラムの最後に書かれているので、返された値にかかわらず、このステップに達すると、プログラムが実行されたことを示します.returnの役割は、1つの値を返すだけでなく、終了関数にもあります.今、私たちは小さなプログラムを書いてテストをします.
  • 実験環境:ubuntu
  • コンパイラ:gcc実験ステップSTEP 1:次の2つのプログラムhelloを作成する.c
  •     int main(void)
        {
            printf("hello");
            return 0;
        }

    world.c
        int main(void)
        {
            printf("
    world"
    ); return 0; }

    STEP 2:まず2つのCファイルをコンパイルして実行可能ファイルをhelloとworldに生成し、端末に次のコマンドを入力します:./hello&&./world、最終的にhello worldを出力することに気づきます.&&の役割は、前のプログラムが正常に終了した後、後のプログラムを実行することです.
    STEP 3:最初のファイルを修正し、最初のファイルの戻り値を1に変更し、再度コンパイルして実行する.helloしか出力されていないことに気づきました.
    結論:return 0;の役割は、メイン関数の実行を正常に終了することです.
    三.main()関数のパラメータ
    Cコンパイラはmain()関数にパラメータがないか、2つのパラメータがあることを許可します.(ただし、これは標準の拡張にすぎません).この2つのパラメータ、1つのintタイプ、1つの文字列タイプです.最初のパラメータはコマンドラインの文字列数です.慣例(必須ではありませんが)に従って、このintパラメータはargcと呼ばれます.(argument count).このパラメータがなぜこの奇妙な名前を付けたのか、今になって分かったのではないでしょうか.2番目のパラメータは文字列文字を指すポインタ配列です.コマンドラインの各文字列はメモリに格納され、ポインタが割り当てられています.このポインタ配列はargvと呼ばれています.(argument value).システムは、各文字列をスペースで区切る.一般的には、プログラム自体の名前をargv[0]に付け、次に、最後の最初の文字列をargv[0]に割り当て、次に、最後の最初の文字列をargv[1]に割り当てるなど
    次に例をとります:Step 1:ファイルを新規作成する-test.c
        #include
        int main(int argc,char *argv[])
        {
            int count;
            printf("The command line has %d arguments:
    "
    ,argc-1); for(count=1;countcount++) printf("%d:%s
    "
    ,count,argv[count]); return 0; }

    Step 2:gcc test.c -o testコンパイルを使用して実行可能ファイルを生成し、入力コマンド./test I love youを実行すると、次の結果が表示されます.
    この例から分かるように、このプログラムは実行可能なプログラムのコマンドを含む4つのパラメータを受信し、argv[]にこの4つのパラメータを挿入し、対応関係は以下の通りである.
    argv[0]—>./test argv[1]—>I argc[2]—>love argv[3]—>you
    argcはパラメータの個数を記録する.
    上記の例では、単一の単語や文字をパラメータとして、文字列配列に入力します.もちろん、文字列も入力できます.たとえば、./test "haha" "xixi"と入力すると、次のようになります.
    コマンドラインの入力は文字列としてメモリに格納されます.つまり、数値を入力する場合は、%dや他の数値ではなく%s形式で入力する必要があります.
    もう1つの例を見てみましょう.ファイルファイルを新規作成します.c
        #include
        int main(int argc,char *argv[])
        {
            FILE *fp;
            fp=fopen(argv[1],"w");
            fputs("I love you ",fp);
            fclose(fp);
            return 0;
        }

    コンパイルして実行可能ファイルを生成し、実行します../file 1.txtと入力すると、現在のディレクトリの下に1が表示されます.txtファイル.
    さあ、main()のコマンドラインパラメータを直感的に理解してみましょう.
    間違いがあれば指摘を歓迎します.