文字列も「文字型の配列」ですから、当然ポインタで扱うことができます。
<文字リテラルをポインタで扱う>
(例) char *p;
p
= "ABC";
この例では文字列"ABC"のアドレスをポインタpに代入しています。
(例) char *p = "ABC"; // 宣言時に初期化もできる.
<文字列リテラル>
文字列"ABC"の占める領域の中身も,ポインタを使えば書き換えることができます。
(例) char *p = "ABC";
strcpy(p,
"DEF"); //pの指すアドレスに"DEF"を代入.
その意味で,""で囲んだ文字列は定数(値を変えられない数)ではないので「文字列リテラル」と呼びます。
<複数の文字列をポインタの配列で指す>
(例) char
*p[3]={"abc", "def", "ghi"};
//
p[0] "abc"のアドレス
//
p[1] "def"のアドレス
//
p[2] "ghi"のアドレス
この例ではポインタの配列として,アドレスを格納するための領域が3個確保され,そのそれぞれが"abc",
"def", "ghi"のアドレスで初期化されます。
<文字列の表示>
上の例のポインタを使って,各文字列を表示するには例えば次のようにします。
(例) printf("%s\n", p[0]); // 'abc'を出力
printf("%s\n",
p[1]); // 'def'を出力
printf("%s\n",
p[2]); // 'ghi'を出力