charの配列(char[])とcharのポインタ(char*)の違いをCサンプルコードを交えて説明します。
以下にchar[]とchar*でCサンプルコードを作って実行してみます。
サンプルコードは指定した配列部分の文字を変更するだけのものです。
char1.c (改行コードLF)
#include <stdio.h>
int main(void)
{
char s[] = "hello world";
s[0] = 'H';
printf("%s\n", s);
return 0;
}
以下、コンパイルして実行した時の出力です。
$ gcc char1.c -o char1 $ ./char1 Hello world
char2.c (改行コードLF)
#include <stdio.h>
int main(void)
{
char *s = "hello world";
s[0] = 'H';
printf("%s\n", s);
return 0;
}
以下、コンパイルして実行した時の出力です。
$ gcc char2.c -o char2 $ ./char2 Segmentation fault
char*で文字列を指定して、配列操作で値を入れ替えようとすると Segmentation fault が表示され終了してしまいます。
これは、char*で文字列を指定すると変更不可の文字列として宣言されるためです。
したがって、変更する場合はchar[]として宣言する必要があります。
以上、char[]とchar*の違いについての記述でした。