char *argv[]の意味

[sng_toc_insert]

具体的に理解するため、char *argv[3]としてメモ。

読み解き方:

Step 1: 基本要素を分解

  • char = 文字型
  • * = ポインタ
  • argv = 変数名
  • [3] = 配列(要素数3)

Step 2: 結合の優先順位

  1. argv[3] が先に結合 → argvは配列
  2. char * が後に結合 → 各要素はcharへのポインタ

Step 3: 完全な意味

char型へのポインタを3つ格納できる配列」

実際の中身:

各要素へのアクセス:

表記意味
argvchar *[3]配列全体
argv[0]char *"./program"の先頭アドレス
argv[1]char *"abc"の先頭アドレス
argv[2]char *"def"の先頭アドレス

読み方のコツ:

右から左に読む

  • argv[3] → 「argvは3つの要素を持つ配列」
  • char * → 「各要素はcharへのポインタ」

つまり「文字列を3つ格納できる配列」。


char *argv[]の場合

読み解き方:

Step 1: 基本要素を分解

  • char = 文字型
  • * = ポインタ
  • argv = 変数名
  • [] = 配列(サイズ未指定)

Step 2: 結合の優先順位

  1. argv[] が先に結合 → argvは配列
  2. char * が後に結合 → 各要素はcharへのポインタ

Step 3: 完全な意味

char型へのポインタを格納する配列(サイズは実行時に決まる)」

[][3]の違い:

宣言意味
char *argv[3]固定サイズ(3つ)の配列
char *argv[]可変サイズの配列

実際の動作

読み方のコツ:右から左に読む

  • argv[] → 「argvは配列」
  • char * → 「各要素はcharへのポインタ(文字列)」

つまり「文字列を格納する配列(個数は実行時に決まる)」

引数の個数が変わっても対応できる柔軟な配列。