Cプログラミング · 1 min read · Nov 20, 2025

Linux Cプログラミングチュートリアル第22部 - Cプログラム内でのコマンドライン引数へのアクセス

前回のチュートリアルでは、Cプログラミング言語におけるポインタに関連する複数の概念について説明しました。その中で、ポインタの配列についても触れました。整数ポインタの配列の例を用いてこの概念を示しました。

Cプログラム内でのコマンドライン引数へのアクセス方法

しかし、そのチュートリアルで述べたように、ポインタの配列は異なる型のものである可能性があります。例えば、こちらが文字ポインタの配列です:

char *arr[] = {"HowtoForge", "FaqForge", "Linux"};

そして、こちらがこの配列がどのように使用されるかを示す小さなプログラムです:

#include   
  
int main()  
{  
 char *arr[] = {"HowtoForge", "FaqForge", "Linux"};  
   
 printf("\n %s", *arr);  
 printf("\n %s", *(arr+1));  
 printf("\n %s", *(arr+2));  
  
   
 return 0;  
}

‘arr’はこの配列の最初の要素のアドレスです。これはポインタの配列なので、最初の要素(およびarrに1や2を加えてアクセスされる他のすべての要素)は、アドレスに過ぎません。したがって、そのアドレスに保持されている値にアクセスするために、*演算子を使用します。

このプログラムの出力は以下の通りです:

HowtoForge   
FaqForge   
Linux

これが文字ポインタの配列から値にアクセスする方法です。さて、なぜ私たちがこれをすべて議論したのか考えているかもしれません。

実は、これはCプログラミング言語をサポートする環境でコマンドライン引数にアクセスする能力という別の重要な概念に私たちを導くからです。これについて詳しく説明しましょう。

今や十分に理解していると思いますが、’main’はプログラムが実行されるときに呼び出される最初の関数です。これは2つの引数、argcとargvで呼び出されます。前者はコマンドライン引数の数を示し、後者は実際には引数自体へのポインタの配列です。

プログラムの名前自体もmain関数に引数として渡されることに注意してください。したがって、argcで表される引数の数は、プログラムに渡された実際の引数の数よりも1つ多くなります。以下はその例です:

#include   
  
int main(int argc, char *argv[])  
{  
 printf("\n %d", argc);  
 printf("\n %s", *argv);  
   
 return 0;  
}

さて、私たちはこのプログラムを実行しました - a.outと呼ばれ、私たちのシステムの’home’ディレクトリに存在します - 引数なしで。そして、出力は以下の通りです:

 1   
 /home/a.out

したがって、プログラムの実行名が引数として渡されたことがわかります。もし私が次のコマンドを使用した場合:

/home/a.out htf ff

その場合、argcは3になり、argvには文字列’/home/a.out’、’htf’、および’ff’のアドレスが含まれていたでしょう。

引数を印刷するプログラムをより良く書く方法は以下の通りです:

#include   
  
int main(int argc, char *argv[])  
{  
   for(int i=0; i

引数はコマンドラインで渡された順序で配列に格納されることを覚えておく価値があります。

結論

Cコード内でコマンドライン引数を扱う必要がある状況に遭遇することが多いでしょう。ここで議論したことは、あなたの基礎を形成するはずです。コマンドライン引数がCプログラム内でどのようにアクセスされるかについて、より良いアイデアを得るために、いくつかのプログラムを試してみてください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。