1. ホーム
  2. c++

[解決済み] ポインターの宣言;型と名前の間のスペースの左側か右側にアスタリスク?[重複している]。

2022-05-05 16:45:25

質問

<ブロッククオート

重複の可能性があります。

char* string と char *string のどちらがより理にかなっていますか? C++のポインタ宣言:アスタリスクの配置

私は、多くのコードでこの混合バージョンを見てきました。(これはCとC++に適用されます)人々は2つの方法のいずれかでポインタを宣言しているようですが、どちらが正しいのか、そしてそれが重要なのか、私にはさっぱりわかりません。

最初の方法は、アスタリスクを型名に隣接させる方法です。

someType* somePtr;

2つ目の方法は、次のようにアスタリスクを変数名の隣に置く方法です。

someType *somePtr;

これには以前から頭を悩ませていました。ポインターを宣言する標準的な方法はあるのでしょうか?ポインタの宣言の仕方は重要なのでしょうか?私は以前、両方の宣言を使ったことがあり、コンパイラがどちらであるかを気にしないことは知っています。しかし、2つの異なる方法でポインタを宣言しているのを見たことがあるということは、その背後に何か理由があるのだと思います。どちらの方法がより読みやすいのか、あるいは私が見逃している何らかの方法で論理的なのか、気になるところです。

どのように解決するのですか?

それは好みの問題であり、ブレーススタイルと同じように、どこか聖戦のようなものです。

スタイル

someType* somePtr;

は、ポインタ変数の型を強調しています。つまり、本質的には somePtr はポインタから someType となります。

スタイル

someType *somePtr

は、指し示すデータの型を強調している。これは、本質的には、「次のようなデータのタイプ」と言うことです。 somePtrsomeType となります。

どちらも同じ意味ですが、ポインタを作成するときのプログラマのメンタルモデルが、ポインタ先のデータとポインタ変数のどちらにフォーカスしているかによって、いわば「焦点」が決まります。

真ん中に置くと( someType * somePtr は、どちらかにコミットすることを避けようとしているのです。