最近ちょっと気になったこと。

printf("%d", sizeof("hoge"));

とすると、結果としては “5” を得る。『文字列リテラルの型は char const * 型だから、ポインタのバイト数(x86の Linux だったので 4 )が表示される』と思っていた。何が間違っているかと言うと、前提が間違っているわけですな。文字列リテラルそれ自体の型は char const * ではなく、char const [] なわけです(本当か?)。
自分の過去のソースには使用してあるけど、過去の自分は上記を理解していたというよりは、無意識に使っていたようだ。うーん、恐い。

コメントを残す

メールアドレスが公開されることはありません。