[sng_toc_insert]
具体的に理解するため、char *argv[3]としてメモ。
もくじ
読み解き方:
Step 1: 基本要素を分解
char= 文字型*= ポインタargv= 変数名[3]= 配列(要素数3)
Step 2: 結合の優先順位
argv[3]が先に結合 →argvは配列char *が後に結合 → 各要素はcharへのポインタ
Step 3: 完全な意味
「char型へのポインタを3つ格納できる配列」
実際の中身:
各要素へのアクセス:
| 表記 | 型 | 意味 |
|---|---|---|
argv | char *[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: 結合の優先順位
argv[]が先に結合 →argvは配列char *が後に結合 → 各要素はcharへのポインタ
Step 3: 完全な意味
「char型へのポインタを格納する配列(サイズは実行時に決まる)」
[]と[3]の違い:
| 宣言 | 意味 |
|---|---|
char *argv[3] | 固定サイズ(3つ)の配列 |
char *argv[] | 可変サイズの配列 |
実際の動作
読み方のコツ:右から左に読む
argv[]→ 「argvは配列」char *→ 「各要素はcharへのポインタ(文字列)」
つまり「文字列を格納する配列(個数は実行時に決まる)」。
引数の個数が変わっても対応できる柔軟な配列。