質問: strtok(NULL, " "); } return 0; } ```
回答: CPUやメモリの仕組みとして、メモリには書き換えができる部分とできない部分の区別があります。 ポインタを使った場合は「文字列リテラル」が作られますが、これは書き換えができない領域に保存されて、書き換えようとしたらCPUが「Segmentation fault」を出して阻止します。 配列を使った場合は書き方としては ``` char str2[] = {'l', 's', ' ', '-', 'a', ' ', '-', 'l', ' ', '-', 'v'}; ``` と同じ意味になるので、書き換えができます。 配列が書き換えられることは ``` int arr[] = [1, 2, 3]; printf("%d", arr[1]); // 2 arr[1] = 10; printf("%d", arr[1]); // 10 ``` といった処理が書けることからも分かると思います。