c言語での文字列の扱い
データ型
c言語には文字列というデータ型はない。
c言語における文字列とは最後の要素としてNULL文字が格納された文字の配列のこと。
初期化
文字列をダブルクオーテーションで囲むと囲まれた文字が順に配列に格納され配列の最後の要素にNULL文字が格納される。そして先頭の要素のポインタが返される。
char a[] = "hello";
NULL文字
NULL文字はある配列が文字列であり、またそれが文字列の終わりであることを示すためのマーカーである。
文字列を扱う際には常にこのことを意識している必要がある。もしNULL文字をつけ忘れるとプログラムがNULL文字を探し続けて予期しないメモリ領域まで読み込もうとしたり操作しようとするというようなことが起こる。
文字列を扱う関数
文字列を扱う関数では文字配列の先頭の要素のポインタを引数で渡す。
受け取った関数はそれが文字列であることを期待しているのでNULL文字もありきで(ポインタをインクリメントするなどして)その領域を参照しようとする。