文字列も「文字型の配列」ですから、当然ポインタで扱うことができます。

 

<文字リテラルをポインタで扱う>

 

(例)   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'を出力

 

 

戻る