【課題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'を出力

 

 

戻る