初級C言語講座
第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ポインタは、全く使う必要が無いのでしょうか?
当ページ・当社へのご意見やご感想があればお手数ですが「
お問い合わせ」までお願いいたします。
当社への就職をお考えの方は「
採用情報ページ」までお願いいたします。
Javaを学びたい方は「
Java講座」もどうぞ。