C++のmain関数におけるint argcとchar *argv[]の意味を解説
C++のプログラムを作成していると、int main(int argc, char *argv[])という形式のmain関数を目にすることがあります。ここで、argcは「argument count(引数の個数)」、argvは「argument values(引数の値)」を意味しています。これらは、プログラムの実行開始時にmain関数へ渡される変数です。
プログラムを実行する際、コマンドラインから引数を渡すことができます。例えば以下のように実行します。
$ ./a.out hello
この場合、「hello」が実行ファイルに渡される引数となります。この引数は、プログラム内からアクセスして利用することが可能です。
サンプルコード
実際に、コマンドライン引数を受け取って表示するプログラムを見てみましょう。
#include<iostream>
using namespace std;
int main(int argc, char** argv) {
cout << "このプログラムには " << argc << " 個の引数があります:" << endl;
for (int i = 0; i < argc; ++i) {
cout << argv[i] << endl;
}
return 0;
}実行方法と結果
このプログラムをコンパイルし、以下のように複数の引数を付けて実行します。
$ ./a.out hello people
実行すると、次のような出力が得られます。まず「このプログラムには3個の引数があります」と表示されます。
引数が3個とカウントされるのは、プログラム名自体(./a.out)も第1引数としてargv[0]に格納されるためです。続いて、各引数の内容が順番に出力されます。
出力結果
C:\Users\user\Desktop\hello.exe hello people
まとめ
- argc:コマンドラインから渡された引数の総数(プログラム名も含む)を表す整数型の変数
- argv:各引数の文字列へのポインタを格納する配列。argv[0]にはプログラム名、argv[1]以降に実際の引数が格納される
この仕組みを理解すれば、コマンドラインからオプションやパラメータを受け取る柔軟なC++プログラムを作成できるようになります。
-
LTEとは?意味や特徴、4G・5Gとの違いをわかりやすく解説
LTEとは?基本的な意味LTE(Long Term Evolution)は、WiMAXや3Gといった従来の技術に代わる4G無線ブロードバンド規格です。3Gより高速ですが、真の4Gや現行の最新規格である5Gと比べると速度は劣ります。LTEは、スマートフォンやタブレットなどのモバイルデバイスが、Wi-Fi接続の代わりに利用する技術です。3Gや4Gと同様に、モバイルデバイスが基地局を経由してインターネットに接続する仕組みを定めた技術標準となっています。実は「LTE」は、4Gへの進化を示すためのマーケティング用語としての側面が強い言葉です。LTEや4Gに該当するかどうかを裁定する国際的な規制機関は存在
-
C++で平均絶対偏差(MAD)を計算するプログラムの書き方
自然数の配列が与えられ、その平均絶対偏差(Mean Absolute Deviation:MAD)を計算することが課題です。平均絶対偏差とは、各データ点と平均値の差(偏差)の絶対値を取ったものの平均であり、データのばらつき具合を測るための統計量の一つです。これを求めるためには、平均、分散、標準偏差に関する基礎知識が必要となります。 平均絶対偏差を計算するには、以下の手順に従います。 平均を計算する 絶対偏差を計算する 計算したすべての偏差を合計する 公式を適用する 入力例と出力例 入力 arr[] = { 34,21,56,76,45,11} 出力 mean absolute devi