たるにっき

Technology Acquisition Log 日記.

C/C++の宣言時constと型はどっちを右に書くか

興味深い投稿を見ました。

'const int' vs. 'int const' as function parameters in C++ and C

C/C++では定数宣言時の記述って const intint const のどっちが正しかったっけと思ったら、どちらも同じように機能するそうです。

個人的には前者の方がこれはイミュータブルな値だよって明示してる感があるので好みですね。

ところでポインタが絡んでくると微妙に事情が変わってくるみたいです。

const char* is a pointer to a constant char

char const* is a pointer to a constant char

char* const is a constant pointer to a (mutable) char

基本的にはconstなcharへのポインタになりますが、char* constと書いた場合のみ(ミュータブルな)charへのconstなポインタになるということみたいです(機械翻訳みたいになってしまった)

要はポインターがconst、つまり後から変えることが出来ないアドレスを宣言するときは3番目を使うようです。

回答者によれば多くの人はこの理由でconstを右側に書く記法を好むらしいです。

イミュータブルなchar型の値でだよ、ではなくchar型のイミュータブルな値だよ、の方が一般的ということですね。

頭の片隅に残しておこうと思…っても多分残らないと思うのでここに残しておきます。