const char*

  • const char* の意味

C言語編 - char *とconst char *は違う
to make sure you don’t alter the array of characters (not the pointer for it, it is changable) stored in const char*.
「const char *」というデータ型は、書き換えできない(読み取り専用の)文字列に対して使います

おまけ(※wordはconst char*型)

ゆに「sizeof(word)ってword変数の型のサイズになっちゃうんだよね。だからこの場合、sizeof(word)は常にsizeof(const char*)になっちゃう。const char*を入れるために必要なサイズですね〜今回の場合、ほしいサイズはstrlen(word)+1かなあ」
私「えっと、ちょっとずれるけど、const char*を入れるために必要なサイズっていくつかわからなくない?stringの長さって謎じゃん」
ゆ「や、アドレスそのものを入れるってことだよ〜文字列の中身ではなく、文字列の先頭のアドレスね」
私「住所を入れるはこってことか。
この場合のconstは箱の中身(アドレス)にかかってるのではなく、そのアドレスの中身(文字)なんだよね...複雑すぎる。箱の中身の中身」

ゆ「そうそう。うむ、めっちゃややこしい…」
私「で、malloc()は()内にバイトを指定するのだけれど、幸運にもchar1文字あたり1バイトなため必要なバイト数はwordの文字数+1(\0)となるわけですね。」
ゆ「そうそう!まさにそうです!」

**


私「if (lowerword == NULL) return word;
でいいかな52行目は。なんとしてでもchar*型で返さなきゃならないので、無理やりchar*型の答えを返さなきゃならないのよね。
(今回だったらlower lettersにしないでそのまま返してしまう、とか)」

ゆ「そういうときはNULLを返せばよいよ〜」
私「えーっ!そうなの?!あ、ポインタだから…?」
ゆ「うん!」
私「なんだかある時はstringとみなして、ある時はポインタとみなしてって忙しいなchar*…」
ゆ「まあねw 実際、2つの側面をうまいこと使い分けてプログラミングしないとすごい大変です…w」