Argc および Argv C++

Argc Oyobi Argv C



C++ プログラムを書いているとき、「main()」関数が非常に重要であると考えられていることは誰もが知っています。なぜなら、この関数の実装が欠落している場合、プログラムをコンパイルできないからです。 C++ の他のすべての関数と同様に、「main()」関数も引数を受け入れることができます。ただし、「main()」関数に引数を渡す場合と他の関数に引数を渡す場合の違いは、前者の場合はコマンド ラインから引数を渡す必要があることです。これは、「main()」関数自体がドライバー関数であり、他の関数がそれを呼び出して引数を渡すことができないためです。この記事では、「main()」関数の 2 つのパラメーター、つまり Ubuntu 20.04 の C++ の「argc」と「argv」について説明します。

Ubuntu 20.04 の C++ の Argc と Argv とは何ですか?

パラメーター「argc」は引数の数を指し、「argv」は C++ でプログラムを実行する際にコマンド ラインを介して「main()」関数に渡されるすべての引数を保持する文字配列を指します。ここで、「argc」は、渡された引数の実際の数よりも常に「1」多くの引数カウントを示すことを知っておく必要があります。これは、オブジェクト ファイルの名前もコマンド ライン引数としてカウントされるためです。 「main()」関数には、任意のデータ型に属するコマンド ライン引数を渡すことができます。注意が必要なのは、「main()」関数内でこれらのパラメーターにアクセスする場合は、そのプロトタイプでこれらのパラメーターが言及されていることだけです。ただし、「main()」関数は、これら 2 つのパラメーターがなくても問題なく機能します。これについては、この記事の次のセクションで説明します。その後、Ubuntu 20.04 の C++ でこれら 2 つのパラメーターを使用する方法に進みます。

C++ で Argc と Argv を使用しない Main 関数:

まず最初に、C++ の「main()」関数は、パラメーター「argc」と「argv」を使用しなくても完全に機能することをお伝えしたいと思います。これは、次の C++ プログラムに示されています。









このプログラムには、引数のない単純な「main()」関数があります。この「main()」関数内では、端末にサンプル メッセージを出力しているだけです。



次に、以下のコマンドを使用して、この基本的な C++ プログラムをコンパイルしました。





$ g++ CommandLine.cpp –o コマンドライン

その後、次のコマンドを実行してこのプログラムを実行しました。



$ . / コマンドライン

この単純な C++ プログラムの出力を次の図に示します。

コマンドライン引数を渡さずに C++ プログラムを実行する:

ここで、「main()」関数がパラメータ「argc」と「argv」を受け入れることができる C++ プログラムを実装しようとしますが、このプログラムをターミナル。上記の C++ プログラムを次の図に示します。

この C++ プログラムでは、「main()」関数は「argc」および「argv」パラメータを受け入れることができます。ただし、この特定の例ではこれらの値を渡すつもりはなかったため、意図的に「argc」を「0」に等しくして、その値を出力しようとしたときにガベージ値を返さないようにしました。その後、端末に「argc」パラメーターの値を出力しました。次に、すべてのコマンド ライン引数を端末に表示するために「for」ループを使用しました。

以下に示すコマンドを使用して、このコードをコンパイルしました。

$ g++ CommandLine.cpp –o コマンドライン

次に、このプログラムを実行するときに、次のコマンドからわかるように、コマンドライン引数を渡しませんでした。

$ . / コマンドライン

以下の画像に示されているこの C++ プログラムの出力から、コマンドライン引数がこの関数に渡されなかったことを確認できます。これは、引数カウントが「0」であるためであり、文字配列「 argv」も空でした。

整数型のコマンド ライン引数を使用した C++ プログラムの実行:

ここで、整数型のコマンドライン引数を渡して同じ C++ プログラムを実行したいと考えています。ただし、その前に、次の図に示すようにコードを少し変更します。

このコードに加えた唯一の変更は、行「argc=0」を削除したことです。この例では、実行時にこのプログラムに渡されたコマンド ライン引数の実際の数を出力したいからです。コードの残りの部分は、上記のセクションで使用したものとまったく同じです。

以下に示すコマンドを使用して、変更したコードを再コンパイルしました。

$ g++ CommandLine.cpp –o コマンドライン

次に、このコードを実行するために、次のコマンドライン引数を使用しました。

$ . / コマンドライン 1 2 3

これは、実行中にこの C++ プログラムに 3 つの整数型のコマンドライン引数、つまり 1、2、および 3 を渡したということです。

この変更されたプログラムの出力は、次の図に示されています。

この C++ プログラムによって返される引数の総数は「4」です。つまり、渡した 3 つの整数引数 + オブジェクト ファイルの名前です。このプログラムはまた、「argv」文字配列の要素を端末に出力しました。つまり、実行時にこのプログラムに渡された実際の整数型の引数を、プログラムの名前とともに出力しました。

文字タイプのコマンド ライン引数を使用した C++ プログラムの実行:

ここで、文字型のコマンドライン引数を渡して実行しようとしたときに、同じ C++ プログラムが正常に動作するかどうかを確認したいと考えました。そのため、これ以上変更する必要はありませんでした。次のように、文字型のコマンドライン引数を指定して実行するだけで済みました。

$ . / コマンドライン a b c d e f

これは、実行中にこの C++ プログラムに 6 文字タイプのコマンドライン引数 (a、b、c、d、e、および f) を渡したということです。

文字型のコマンドライン引数を同じ C++ プログラムに渡した結果として生成される出力を以下に示します。

この C++ プログラムによって返される引数の総数は「7」です。つまり、渡した 6 文字の引数 + オブジェクト ファイルの名前です。このプログラムはまた、「argv」文字配列の要素を端末に出力しました。つまり、実行時にこのプログラムに渡された実際の文字型の引数を、プログラムの名前とともに出力しました。

結論:

この記事は、「main()」関数のパラメーターとしても知られる 2 つのコマンドライン引数、つまり「argc」と「argv」について説明することを目的としていました。これら 2 つのパラメーターの重要性については、その使用方法を説明することで説明しました。次に、Ubuntu 20.04 の C++ で「argc」と「argv」を使用する例をいくつか紹介しました。さらに、これらのパラメーターを使用しなくても、「main()」関数が完全に機能することも明らかにしました。したがって、この記事を読めば、C++ での「argc」と「argv」の使用法が非常に明確に理解できます。