【課題3− 13 ポインタと文字列】
<文字リテラルをポインタで扱う>
(例) 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'を出力