第7章 C言語のポインタ2 ~charポインタとchar配列~

 では、先ほどのプログラムを少し変えてみましょう。

— リスト18``–

#include <stdio.h>
#include <string.h>

void main()
{
  char array[7];
  char *ptr;

  /**
   * char配列に、文字列をコピーする
   */
  strcpy(array, "abcdef");

  /**
   * char ポインタに、char配列の先頭のアドレスをコピーする
   */
  ptr = &(array[0]);

  /**
   * char ポインタに、文字列をコピーする
   */
  strcpy(ptr, "ghijkl");

  /**
   * char 配列、char ポインタをそれぞれ文字列形式で表示する
   */
  printf(" array = %s\n ptr = %s\n", array, ptr);
}

 char ポインタに、char 配列の先頭アドレスをコピーしたために、 プログラムは異常終了しなくなりました。 しかし、これは新たに箱が用意されたわけではありません。 表示結果を見れば、明らかですね。

 以上のことから、char ポインタを使って文字列を扱う場合には、 次のような問題があることがわかりました。

 1.文字列を入れるべき箱が用意されない。
 2.他のchar 配列のアドレスを代入すると1.の問題は解決するが、
   元々の変数も書き換わることになる。

 結論から言うと、初心者のうちは、なるべくchar 配列を使ってください。

 では、charポインタは、全く使う必要が無いのでしょうか?

< 前のページへ

Pagetop